Abrufen von Dateinamen in ein Arbeitsblatt (Microsoft Excel)
Carol hat ein Verzeichnis mit ungefähr 1.000 Dateien mit Namen wie YR1905-LIC12345-Smith, Harry-Brown, Mary. Sie möchte alle diese Dateinamen (nicht die Dateien selbst) in ein Arbeitsblatt einfügen und die Namen am Bindestrich trennen. Somit würde der Beispieldateiname tatsächlich vier Zellen in einer einzelnen Zeile belegen. Carol geht davon aus, dass dies ein Makro erfordert, aber sie ist sich nicht sicher, wie sie auf die Dateinamen in diesem Makro zugreifen soll.
Sie können dazu natürlich ein Makro verwenden, aber Sie müssen kein Makro verwenden. Sie können stattdessen einen alten Trick aus der DOS-Ära verwenden, um das zu bekommen, was Sie brauchen.
Navigieren Sie an der Eingabeaufforderung (über Windows zugänglich: Start | Alle Programme | Zubehör | Eingabeaufforderung), bis Sie sich in dem Verzeichnis befinden, das die Dateien enthält. Geben Sie dann Folgendes ein:
dir /b /a-d > filelist.txt
Dadurch wird eine Textdatei (filelist.txt) erstellt, die eine Liste aller Dateien im aktuellen Verzeichnis enthält. In Excel können Sie nun die folgenden Schritte ausführen:
-
Klicken Sie in Excel in der Symbolleiste auf das Werkzeug Öffnen. Excel zeigt das Dialogfeld Öffnen an.
-
Geben Sie in der Dropdown-Liste Dateityp am unteren Rand des Dialogfelds an, dass Sie Textdateien (.prn; .txt; * .csv) öffnen möchten.
-
Navigieren Sie zu der Datei filelist.txt, die Sie an der Eingabeaufforderung erstellt haben, und wählen Sie sie aus.
-
Klicken Sie auf Öffnen. Excel startet den Textimport-Assistenten und zeigt das Dialogfeld Schritt 1 von 3 an. (Siehe Abbildung 1.)
-
Stellen Sie sicher, dass die Option Begrenzt ausgewählt ist, und klicken Sie dann auf Weiter. Excel zeigt das Dialogfeld Schritt 2 von 3 an.
-
Stellen Sie sicher, dass Sie einen Bindestrich als Trennzeichen angeben. (Sie müssen auf Andere klicken und dann einen Bindestrich als Trennzeichen eingeben.)
-
Klicken Sie auf Fertig stellen. Ihre Datei wird an den Strichen importiert und beschädigt, genau wie Sie es wollten.
Die oben genannten Schritte sind recht einfach durchzuführen, insbesondere wenn Sie die Dateiliste nur gelegentlich in Excel abrufen müssen. Wenn Sie dies routinemäßiger tun müssen, sollten Sie wahrscheinlich nach einer Möglichkeit suchen, dies mithilfe eines Makros zu tun. Das folgende Makro funktioniert sehr schnell:
Sub GetFileNames() Dim sPath As String Dim sFile As String Dim iRow As Integer Dim iCol As Integer Dim splitFile As Variant 'specify directory to use - must end in "\" sPath = "C:\" iRow = 0 sFile = Dir(sPath) Do While sFile <> "" iRow = iRow + 1 splitFile = Split(sFile, "-") For iCol = 0 To UBound(splitFile) Sheet1.Cells(iRow, iCol + 1) = splitFile(iCol) Next iCol sFile = Dir ' Get next filename Loop End Sub
Stellen Sie beim Ausführen des Makros sicher, dass das aktuelle Arbeitsblatt nichts enthält. (Alles, was dort vorhanden ist, wird überschrieben.) Außerdem sollten Sie den Verzeichnispfad ändern, der der Variablen sPath am Anfang des Makros zugewiesen ist.
Wenn beim Ausführen des Makros eine Fehlermeldung angezeigt wird, stehen die Chancen gut, dass Sie Excel 97 verwenden. Die Funktion „Teilen“ (zum Aufteilen des Dateinamens in den Bindestrichen) wurde VBA erst in Excel 2000 hinzugefügt. Wenn Sie Excel 97 verwenden Dann können Sie die folgende Routine verwenden, um zu emulieren, was die Split-Funktion tut:
Function Split(Raw As String, Delim As String) As Variant Dim vAry() As String Dim sTemp As String Dim J As Integer Dim Indx As Integer Indx = 0 sTemp = Raw J = InStr(sTemp, Delim) While J > 0 Indx = Indx + 1 ReDim Preserve vAry(1 To Indx) vAry(Indx) = Trim(Left(sTemp, J)) sTemp = Trim(Mid(sTemp, J, Len(sTemp))) J = InStr(sTemp, Delim) Wend Indx = Indx + 1 ReDim Preserve vAry(1 To Indx) vAry(Indx) = Trim(sTemp) Split = vAry() End Function
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (11143) gilt für Microsoft Excel 97, 2000, 2002 und 2003.
Eine Version dieses Tippes für die Multifunktionsleistenoberfläche von Excel (Excel 2007 und höher) finden Sie hier: