Bearbeiten: Nach user3561813
der Vorschlag zum Hinzufügen "/"
, liest es jetzt die erste Datei. Ich habe eine Fehlermeldung außerhalb des Bereichs "9"
. Es liest die erste Datei korrekt. Letztendlich versuche ich, jede Datei zu öffnen, und lese den Namen und das Alter (das ist ein Test, nicht das reale Produktionsformular). Und rufen Sie die Werte zurück zu meinem Hauptarbeitsblatt ab.Excel VBA: Öffnen und Lesen von Excel-Datei
Original Frage
Ich versuche, hundert von Excel-Formulare in einem Ordner zu lesen, lesen, eine bestimmte Zelle Position und speichert sie in meinem Test-Arbeitsblatt. Ich habe dieses Tutorial gegooglet und versucht, meinen Code zu schreiben. Aber wenn ich die Funktion "Ordner holen" ausfühle, habe ich einen Ordnerpfad ausgewählt, der die Excel-Dateien, die ich habe, nicht wiederholt. (Oder notieren ihre Namen)
'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
Wenn Sie erklären, was 'es mir nicht erlaubt, es auszuführen' bedeutet, dass Sie Ihre Chancen auf Antworten sehr erhöhen würden. – SantiBailors
Gibt 'fileName = Dir (Verzeichnis &" * .xl ?? ")' tatsächlich eine nicht leere Zeichenfolge zurück? Beendet der Wert von 'Pfad' Argument mit einem umgekehrten Schrägstrich? Vielleicht möchten Sie das Ergebnis von 'directory & '* .xl ??" 'drucken, um sicherzustellen, dass es ein Wert ist, der, wenn er als Argument von' Dir() 'verwendet wird, das zurückgibt, was Sie erwarten. – SantiBailors
Beachten Sie, dass der "Pfad", wenn er in LoopFiles empfangen wird, keinen abschließenden Backslash hat, so dass Ihr 'filename = Dir (directory &" * .xl ?? ")' keinen korrekten Pfad erzeugt, was bedeutet, dass Dir dies tut eine leere Zeichenfolge zurückgeben – Dave