Importieren basierend auf einem partiellen Dateinamen (Microsoft Excel)
Ira erhält wöchentlich eine durch Text getrennte Datei, die er mithilfe eines Makros in Excel importiert. Der Dateiname war jede Woche derselbe, sodass Ira ihn in das Makro einbetten konnte. Dies machte den Import sehr einfach. Vor kurzem hat das neue System des Anbieters begonnen, den Dateinamen jede Woche zu ändern, aber die ersten 12 Zeichen bleiben immer gleich. Ira fragt sich, wie er das Makro codieren kann, um diese Textdatei zu importieren, ohne den Dateinamen jede Woche ändern zu müssen.
Es gibt einige Möglichkeiten, wie Sie dieses Problem angehen können, und alle können eine umfassende Neukodierung Ihres Makros bedeuten. Die Methode, die Sie wählen, sollte davon abhängen, wie Sie Ihre Arbeit jede Woche erledigen möchten. Angenommen, Sie kennen das Verzeichnis, in dem die eingehende Datei gespeichert ist, die Basis-12-Zeichen für den Dateinamen und die Dateinamenerweiterung. Mit diesen Informationen können Sie den Benutzer einfach auffordern, das Suffix für den Dateinamen auf folgende Weise anzugeben:
Sub OpenImportFile() Dim sFileName As String Dim sBase As String Dim sSuffix As String Dim sExt As String sBase = "c:\MyDirectory\First12Chars" sExt = ".csv" sSuffix = InputBox("Enter suffix for filename") sFileName = sBase & sSuffix & sExt Workbooks.Open Filename:=sFileName End Sub
Sie können natürlich die Basis und die Erweiterung nach Ihren Wünschen ändern. In diesem Beispiel wird davon ausgegangen, dass Sie eine CSV-Datei importieren, die problemlos in Excel geöffnet werden sollte.
Wenn Sie einfach eine Gruppe von Dateien in einem Ordner ablegen und alle öffnen möchten, kann der Code etwas schneller ausgeführt werden, da Sie keine Benutzereingaben benötigen.
Sub OpenImportFiles() Dim sFileName As String Dim sBase As String Dim sExt As String sBase = "c:\MyDirectory\First12Chars" sExt = ".csv" sFileName = Dir(sBase & "*" & sExt) If sFileName = "" Then MsgBox "No Files Found" Else Do While sFileName > "" Workbooks.Open Filename:=sFileName sFileName = Dir Loop End If End Sub
Dieser Ansatz öffnet alle CSV-Dateien im Ordner. Um einen anderen Dateityp zu öffnen, ändern Sie einfach, was in der Variablen sExt gespeichert ist. Beachten Sie, dass alle CSV-Dateien im Ordner geöffnet sind und möglicherweise Importdateien aus früheren Wochen geöffnet werden. (Dies kann oder kann nicht das sein, was Sie wollen.)
Alles, was bisher in diesem Tipp vorgestellt wurde, setzt voraus, dass Sie beim „Importieren“ einer Datei nur die Datei öffnen möchten, damit Sie damit arbeiten können. Das kann nicht der Fall sein; Möglicherweise möchten Sie, dass Ihr Makro die Importdatei auf irgendeine Weise verarbeitet und etwas damit macht. Diese Funktionalität befindet sich möglicherweise bereits in Ihrem älteren Makro. Sie müssen also nur ändern, wie die Importdatei identifiziert wird. In diesem Fall kann der von Ihnen verwendete Code an den bereits in diesem Tipp enthaltenen Code angepasst werden.
Eine andere Möglichkeit, die Daten aus einer Textdatei abzurufen und in eine Arbeitsmappe einzufügen, ist die Verwendung der OpenText-Methode, wie in diesem Beispielcode gezeigt:
Sub OpenImportFile() Dim sFileName As String Dim sBase As String Dim sExt As String sBase = "c:\MyDirectory\First12Chars" sExt = ".csv" sFileName = sBase & "*" & ".txt" Workbooks.OpenText Filename:=sFileName, Origin:= _ xlMSDOS, StartRow:=1, DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:= False, Space:=False, _ Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True End Sub
Eine vollständige Untersuchung der Funktionsweise der OpenText-Methode würde den Rahmen dieses Tipps sprengen. Das Ergebnis ist jedoch, dass alle begrenzten Textdateien, die mit den Basiszeichen 12 beginnen, in Ihren Arbeitsmappen geöffnet werden sollten.
Sie können die Funktionsweise der Methode ändern, indem Sie die Parameter ändern. Sie sollten besonders auf die Parameter achten, mit denen festgelegt wird, welches Trennzeichen verwendet werden soll.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (13472) gilt für Microsoft Excel 2007, 2010, 2013 und 2016.