2016-06-23 4 views
2

Я новичок в VBA. У меня два листа, т. Е. У листа 1 есть путь к каталогу каталогов и вывода. На sheet2 я начал код. Я хочу читать данные из нескольких файлов xls, которые являются хранилищами в папке. этот путь к папке указан в листе1. Я хочу скопировать все заголовки файлов из всех xls-файлов в sheet3 в столбец. мой код работает хорошо, но я дал путь к файлу напрямую, но я хочу получить его с другого листа. Пожалуйста, помогите мне. Ниже мой код, и у меня есть листы sheet1. Sheet1 DataКак получить путь к файлу с другого листа в VBA

Public Sub CommandButton1_Click() 
'DECLARE AND SET VARIABLES 
Dim wbk As Workbook 
Dim Filename As String 
Dim Path As String 
Dim mainwb As Workbook 
Dim ws As Worksheet 
Dim search_result As Range 'range search result 
    Dim blank_cell As Long 
Dim wb As Workbook 
Path = "D:\Testing\Data\Input\" 
Filename = Dir(Path & "*.xls") 
'-------------------------------------------- 
'OPEN EXCEL FILES 
Do While Len(Filename) > 0 'IF NEXT FILE EXISTS THEN 
    Set wbk = Workbooks.Open(Path & Filename) 
    'MySheet = Application.Caller.Worksheet.Name 
    'Set sh = MySheet() 
    'Variable = ActiveSheet.Name 
    ' Sheets(Variable).Range("A1:D1").Copy 
    'Sheets("Sheet2").Column(B2).Select.Activate.Paste 
    ' Sheets("Sheet2").Active 
    'Columns("B2").Select 
    Set wbk = ActiveWorkbook 
    Variable = ActiveSheet.Name 
    wbk.Sheets(Variable).Rows(1).EntireRow.Copy 

Workbooks("Tool.xlsm").Activate 
' Workbooks("DFT Tool.xlsm").Sheets("Sheet2").Activate 
'ActiveWorkbook.ActiveSheet 

    'Sheets("Sheet2").Activate 
    'ActiveSheet.Columns("E").Select 
    ' Range("E1").End(xlDown).Offset(1, 0).Select 
    'ActiveSheet.Paste 

Set wb = ActiveWorkbook 
    Set ws = wb.Sheets("Sheet2") 
    For Each cell In ws.Columns(3).Cells 
     If IsEmpty(cell) = True Then cell.Select: Exit For 
    Next cell 
Selection.PasteSpecial Paste:=xlPasteValues, Transpose:=True 

' Selection.PasteSpecial Paste:=xlPasteValues, Transpose:=True 
    wbk.Close savechanges:=False 
    Filename = Dir 
Loop 
End Sub 

Заранее спасибо

ответ

0

Попробуйте

Path = Cells(2,2).value 

Это имеет значение ячейки B2 и сохраняет его в переменной Path. Другая возможность:

Filename = Dir(Cells(2,2).value & "*.xls") 
+1

Application.Workbooks ("Your_Workbook") Worksheets ("Your_Sheet") Cells (2, 2) – Heini

+0

пытались, но не работает – Amar

+0

Спасибо за ответ .... теперь код работает хорошо.. , Но проблема в том, что первый файл проверен и скопирует данные на лист2 успешно. но открытый файл не закрывается автоматически, и появляется сообщение «Предупреждение о конфиденциальности: этот документ содержит макросы, элементы управления ActivX, информацию о пакетах расширений XML .......», тогда мне нужно нажать «да», а затем перейти к циклу. Как избежать этого – Amar