2012-06-22 5 views
9

Я хочу, чтобы открыть все файлы в указанной папке и имею следующий кодмакро - открыть все файлы в папке

Sub OpenFiles() 
Dim MyFolder As String 
Dim MyFile As String 
MyFolder = "\\ILAFILESERVER\Public\Documents\Renewable Energy\FiTs\1 Planning 
      Department\Marks Tracker\Quality Control Reports" 
MyFile = Dir(MyFolder & "\*.xlsx") 
Do While MyFile <> "" 
Workbooks.Open Filename:=MyFolder & "\" & MyFile 
Loop 
End Sub 

У меня есть проблема в том, что он просто продолжает пытаться открыть первый файл в папку и не будет двигаться дальше. Может кто-нибудь помочь, я немного новичок в VBA и действительно могу с некоторой помощью. Я пытаюсь открыть около 30 отчетов, которые все в формате .xlsx. Спасибо заранее.

+0

Вы хотите открыть все файлы в папке в то же самое время? –

ответ

20

Вы должны добавить эту строку как раз перед loop

MyFile = Dir 
Loop 
+0

Привет, Сиддхарт, это прекрасно работает. Большое спасибо –

+4

Привет, Росс и добро пожаловать в StackOverflow! Здесь принято благодарить людей, нажав кнопку «принять как ответ» рядом с их ответом. Он имеет форму большой галочки. Таким образом, ваш помощник получает очки в качестве вознаграждения за помощь вам, и вы получаете кредит за предоставление полезной страницы вопросов и ответов. –

1

Попробуйте следующий код:

Sub opendfiles() 

Dim myfile As Variant 
Dim counter As Integer 
Dim path As String 

myfolder = "D:\temp\" 
ChDir myfolder 
myfile = Application.GetOpenFilename(, , , , True) 
counter = 1 
If IsNumeric(myfile) = True Then 
    MsgBox "No files selected" 
End If 
While counter <= UBound(myfile) 
    path = myfile(counter) 
    Workbooks.Open path 
    counter = counter + 1 
Wend 

End Sub 
0

Вы можете использовать Len(StrFile) > 0 в регистрации оператора цикла!

Sub openMyfile() 

    Dim Source As String 
    Dim StrFile As String 

    'do not forget last backslash in source directory. 
    Source = "E:\Planning\03\" 
    StrFile = Dir(Source) 

    Do While Len(StrFile) > 0       
     Workbooks.Open Filename:=Source & StrFile 
     StrFile = Dir() 
    Loop 
End Sub 
Смежные вопросы