編輯:user3561813
user3561813
之後建議加入"/"
,現在它讀取第一個文件。我有一個超出範圍的錯誤消息"9"
。它會正確讀取第一個文件。最終,我試圖打開每個文件,並閱讀名稱和年齡(這是一個測試不是真正的生產形式)。並將這些值返回到我的主工作表中。Excel VBA:如何打開並從excel文件讀取
原來的問題
我想要的文件夾中讀取的Excel表格百,讀一個特定的細胞位置,並把它們記錄到我的測試工作。我google了這個教程,並試圖寫我的代碼。但是,當我執行獲取文件夾功能時,選擇了一個文件夾路徑,它不循環我有的Excel文件。 (或記錄他們的名字)
'Source: https://www.youtube.com/watch?v=7x1T4s8DVc0
Sub GettingFolder()
Dim SelectedFolder As String
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Select folder"
.ButtonName = "Confirm"
.InitialFileName = "U:\"
If .Show = -1 Then
'ok clicked
SelectedFolder = .SelectedItems(1)
MsgBox SelectedFolder
' This is where I want to call my function
LoopFiles (SelectedFolder)
Else
'cancel clicked
End If
End With
End Sub
' Source: http://www.excel-easy.com/vba/examples/files-in-a-directory.html
Sub LoopFiles(path As String)
Dim directory As String, fileName As String, sheet As Worksheet
Dim i As Integer, j As Integer
' Avoid Screen flicker and improve performance
Application.ScreenUpdating = False
' Fixed per suggestion below..
directory = path & "\"
fileName = Dir(directory & "*.xl??")
Do While fileName <> ""
i = i + 1
j = 2
Cells(i, 1) = fileName
Workbooks.Open (directory & fileName)
For Each sheet In Workbooks(fileName).Worksheets
Workbooks("Testing.xlsm").Worksheets(1).Cells(i, j).Value = sheet.Name
j = j + 1
Next sheet
Workbooks(fileName).Close
fileName = Dir()
Loop
' Reset the screen update setting
Application.ScreenUpdating = True
End Sub
如果你解釋「它不允許我執行它」意味着你會大大增加獲得答案的機會。 – SantiBailors
'fileName = Dir(directory&「* .xl ??」)'實際上是否返回一個非空字符串? 'path'參數的值是否以反斜槓結束?你可能想要打印'directory&「* .xl ??」'的結果,以確保它是一個用作'Dir()'參數的值應該返回你期望的值。 – SantiBailors
請注意,在LoopFiles中收到的'path'沒有尾部的反斜槓,因此您的'filename = Dir(directory&「* .xl ??」)'不會產生正確的路徑,這意味着Dir會返回一個空字符串 – Dave