Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Workbook mit variablen Namen oeffnen

Betrifft: Workbook mit variablen Namen oeffnen von: Nisi
Geschrieben am: 25.07.2014 17:07:09

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

  

Betrifft: AW: Workbook mit variablen Namen oeffnen von: Michael
Geschrieben am: 25.07.2014 18:45:49

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


  

Betrifft: AW: Workbook mit variablen Namen oeffnen von: Nisi
Geschrieben am: 25.07.2014 21:00:12

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


  

Betrifft: AW: Workbook mit variablen Namen oeffnen von: Michael
Geschrieben am: 26.07.2014 15:41:54

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


 

Beiträge aus den Excel-Beispielen zum Thema "Workbook mit variablen Namen oeffnen"