Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Workbook mit variablen Namen oeffnen

Workbook mit variablen Namen oeffnen
25.07.2014 17:07:09
Nisi
Hallo zusammen,
ich bins nochmal und versuch mich jetzt auch praeziser auszudruecken.
Ich habe eine vorhandene Excel-Datei in der mein komplettes Macro drin ablaeuft.
Die Daten kopier ich im Moment noch von Hand dort hinein.
Das Rohdaten befinden sich in einer csv-Datei im gleichen Ordner wie die Makrodatei.
Jetzt die Frage, kann ich Dateien automatisch aus der csv-Datei in meine vorhandene Makrodatei kopieren, auch wenn sich der Name der csv-Datei aendert.
Da es die einzige andere Datei in diesem Ordner ist (und auch die einzige csv-Datei), kann man da einfach sagen "suche die csv-Datei" im Ordner in dem wir uns befinden und kopiere die Daten des ersten Tabellenblatts daraus?
Oder gibt es die Moeglichkeit die Datei nur mit einem Teil des Namens anzusprechen,
also *AK_RP* weil das findet sich in allen Namen gleich wieder. Ziffern die vor AK und nach RP stehen aendern sich leider immer.
Danke schon mal fuer eure Hilfe
GLG
Nisi

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workbook mit variablen Namen oeffnen
25.07.2014 18:45:49
Michael
Hallo Nisi,
wenn Du wirklich sicherstellen kannst, daß nur immer EINE Datei da ist, sollte es so gehen:
Sub DateienSuchen()
' Quelle: http://www.office- _
loesung.de/ftopic369121_0_0_asc.php
Dim Dateiname, Pfad, Gefunden As String
Pfad = ActiveWorkbook.Path & "\"
Dateiname = Dir(Pfad & "*.csv")
Do While Dateiname  ""
' MsgBox "Ergebnis: " & Pfad & Dateiname
Gefunden = Pfad & Dateiname
Dateiname = Dir()
Loop
MsgBox "Ergebnis: " & Gefunden
' Workbooks.Open Filename:=Gefunden
' usw. evtl. "Text in Spalten" ausführen,
' kopieren, einfügen, schließen
End Sub
Das Ergebnis (der letzten gefundenen Datei) steckt in der Variablen "Gefunden", und von da aus kannst Du weitermachen.
Wir wissen nicht, was für Daten Du hast, bzw. ob die evtl. noch mit irgendeinem Trennzeichen getrennt werden müssen, aber die Trennung solltest Du mit dem Makrorekorder aufzeichnen und an passender Stelle einfügen können.
Ich habe das Öffnen der gefundenen Datei im VBA-Code auskommentiert; wie das Kopieren und Schließen geht, müßtest Du im Forum ausreichend dokumentiert finden.
Auch liebe Grüße,
Michael

Anzeige
AW: Workbook mit variablen Namen oeffnen
25.07.2014 21:00:12
Nisi
Hey Michael,
Vielen lieben Dank,
funktioniert super.
Ich weiss nicht wieso aber irgendwie schaff ichs nicht die Daten rueberzukopieren.
Hier der Code:

Dim wb As Workbook
Set wb = ThisWorkbook
Dim wks As Worksheet
Set wks = Worksheets("Raw")
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim rawdata, rawpath, rawfile As String
rawpath = ActiveWorkbook.Path & "\"
rawdata = Dir(rawpath & "*.csv")
rawfile = rawpath & rawdata
rawdata = Dir()
Workbooks.Open Filename:=rawfile
Application.ScreenUpdating = False
ActiveWorkbook.Worksheets(1).UsedRange.Copy
'Hier sollen die markierten Daten in das Tabellenblatt "Raw" in diese Datei(wb.wks) kopiert  _
werden
ActiveWorkbook.Close savechanges:=False
Application.ScreenUpdating = True
Waer super wenn ihr mir noch kurz helft.
Denise

Anzeige
AW: Workbook mit variablen Namen oeffnen
26.07.2014 15:41:54
Michael
Hallo Nisi,
freut mich, wenn es so weit funzt. Du hast leichte Änderungen vorgenommen, wie ich sehe. Die Zeile
rawdata = Dir()
solltest Du rausnehmen können, wenn Du rawdata hinterher nicht mehr brauchst.
Letztlich hast Du auf die Schleife verzichtet, was dazu führt, daß Du nur die jeweils erste .CSV öffnest.
In meinem Beispiel war keine Fehlerabfrage drin, aber grundsätzlich sollte eine rein, etwa in Form einer Abfrage direkt nach der Zeile "rawdata = Dir(rawpath & "*.csv")", nämlich if rawdata="", falls nichts zurückgeliefert wird. Klar, es kommt darauf an, wer letztlich mit dem Makro arbeiten soll. Falls Du es nur selbst bist, ok, aber falls nicht, wäre ne Fehlermeldung und entsprechendes handling ganz nett, zumal Du alles mögliche abgeschaltet hast.
Ich habe Deinen Code nochmal erweitert, wiederum ohne Fehlerhandling, aber er funktioniert mit meinem Dateinamen. (Ganz glücklich bin ich nicht damit, derweil er wenig elegant aussieht, aber was soll's.)
Sub nisi()
Dim wb As Workbook
Set wb = ThisWorkbook
Dim wks As Worksheet
Set wks = Worksheets("Raw")
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim rawdata, rawpath, rawfile As String
rawpath = ActiveWorkbook.Path & "\"
rawdata = Dir(rawpath & "*.csv")
rawfile = rawpath & rawdata
' rawdata = Dir()
Workbooks.Open Filename:=rawfile
Application.ScreenUpdating = False
ActiveWorkbook.Worksheets(1).Range("A1").CurrentRegion.Copy
Windows("PfadTest.xlsm").Activate
' hier rein eben Dein Dateiname
Worksheets("Raw").Activate
Range("A1").Select
ActiveSheet.Paste
Windows(rawdata).Activate
ActiveWorkbook.Close savechanges:=False
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Genau, weil ich Deine DIMs nicht verwendet habe. Nachdem ich schon mal den Fall hatte, daß usedrange unerwartete Ergebnisse erzeugt hat, habe ich currentregion verwendet. Geschmackssache.
Schöne Grüße,
Michael
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Workbook mit variablen Namen öffnen


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei mit einem variablen Namen zu öffnen und Daten aus einer CSV-Datei zu kopieren, kannst Du den folgenden VBA-Code verwenden:

Sub DateienSuchen()
    Dim Dateiname As String, Pfad As String, Gefunden As String
    Pfad = ActiveWorkbook.Path & "\"
    Dateiname = Dir(Pfad & "*.csv")

    Do While Dateiname <> ""
        Gefunden = Pfad & Dateiname
        Dateiname = Dir()
    Loop

    MsgBox "Ergebnis: " & Gefunden
    Workbooks.Open Filename:=Gefunden
    ' Hier kannst Du weitere Aktionen durchführen, z.B. Daten kopieren
End Sub

In diesem Code wird die CSV-Datei im gleichen Ordner wie Deine Makrodatei gesucht. Der Dateiname wird in der Variablen Gefunden gespeichert, die Du dann für das Öffnen der Datei nutzen kannst.


Häufige Fehler und Lösungen

Fehler: Die CSV-Datei wird nicht gefunden.
Lösung: Stelle sicher, dass sich die CSV-Datei im gleichen Verzeichnis wie Deine Makrodatei befindet und dass nur eine CSV-Datei vorhanden ist.

Fehler: Daten werden nicht kopiert.
Lösung: Überprüfe, ob der Code zum Kopieren der Daten korrekt implementiert ist. Hier ein Beispiel, wie Du Daten aus dem ersten Tabellenblatt kopieren kannst:

Workbooks.Open Filename:=rawfile
ActiveWorkbook.Worksheets(1).UsedRange.Copy
wb.Worksheets("Raw").Range("A1").PasteSpecial
ActiveWorkbook.Close savechanges:=False

Alternative Methoden

Eine alternative Methode wäre die Verwendung einer Schleife, um mehrere CSV-Dateien zu verarbeiten, falls Du mehr als eine Datei im Ordner hast. Hier ein Beispiel:

Sub MehrereDateienÖffnen()
    Dim Dateiname As String, Pfad As String
    Pfad = ActiveWorkbook.Path & "\"
    Dateiname = Dir(Pfad & "*.csv")

    Do While Dateiname <> ""
        ' Öffne die Datei und führe die gewünschten Aktionen durch
        Workbooks.Open Filename:=Pfad & Dateiname
        ' Kopiere die Daten hier
        ActiveWorkbook.Close savechanges:=False
        Dateiname = Dir()
    Loop
End Sub

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie Du die Daten aus einer CSV-Datei in ein bestimmtes Arbeitsblatt kopieren kannst:

Sub KopiereDatenVonCSV()
    Dim wb As Workbook
    Set wb = ThisWorkbook
    Dim rawpath As String, rawfile As String
    rawpath = ActiveWorkbook.Path & "\"
    rawfile = Dir(rawpath & "*.csv")

    If rawfile <> "" Then
        Workbooks.Open Filename:=rawpath & rawfile
        ActiveWorkbook.Worksheets(1).UsedRange.Copy
        wb.Worksheets("Raw").Range("A1").PasteSpecial
        ActiveWorkbook.Close savechanges:=False
    Else
        MsgBox "Keine CSV-Datei gefunden."
    End If
End Sub

Tipps für Profis

  • Fehlerbehandlung: Füge eine Fehlerbehandlung hinzu, um mögliche Probleme beim Öffnen oder Kopieren von Dateien zu erfassen. Beispiel:
On Error GoTo FehlerHandler
' Dein Code hier
Exit Sub
FehlerHandler:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
  • Optimierung der Leistung: Deaktiviere ScreenUpdating, DisplayAlerts und EnableEvents, um die Leistung während des Makroablaufs zu verbessern.

FAQ: Häufige Fragen

1. Wie öffne ich eine Datei mit einem variablen Dateinamen?
Du kannst den oben genannten VBA-Code verwenden, um die letzte CSV-Datei im Ordner zu finden und zu öffnen.

2. Was muss ich tun, wenn mehrere CSV-Dateien im Ordner sind?
Verwende eine Schleife, um jede CSV-Datei im Ordner zu öffnen und die gewünschten Daten zu kopieren.

3. Kann ich das Makro für eine bestimmte Excel-Version verwenden?
Ja, der bereitgestellte VBA-Code funktioniert in den meisten aktuellen Excel-Versionen, die VBA unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige