Для каждого - открыть указанные книги в массиве - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть около 200ish книг, которые мне нужно открыть в каталоге, содержащем тысячи файлов.Имена этих 200 файлов были помещены в Sheet 4 B3:B231.

Когда я запускаю макрос, я получаю код для работы только с 4 из этих файлов, 1 из 4 - нетдаже упомянутый в указанном диапазоне.

Dim wb As Workbook, shtDest As Worksheet
Dim MyFile As String
Dim Filepath As String
Dim WoBo As Variant
Dim DirArray As Variant
DirArray = Sheets("Sheet4").Range("B3:B231").Value

Filepath = "C:\"
MyFile = Dir(Filepath)

Set shtDest = ThisWorkbook.Sheets("Sheet1")

For Each WoBo In DirArray
      'code  
Next WoBo
End Sub

Я довольно плохо знаком с массивами и не совсем понимаю строку For Each, поэтому подозреваю, что ошибка там есть.

1 Ответ

0 голосов
/ 14 ноября 2018

Попробуйте что-то вроде следующего.Цикл For Loop быстрее, чем For For для массивов, и использование Transpose превращает его в одномерный массив для зацикливания.

Dim dirArray()
dirArray = Application.Transpose(ThisWorkbook.Worksheets("Sheet4").Range("B3:B231").Value)

For i = LBound(dirArray) To Ubound(dirArray)
    If instr(dirArray(i),"xls") > 0 Then '<== very basic check
        Workbooks.Open(dirArray(i))  '<== should be full filepath of file
        ' Do stuff
    End If
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...