Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1372to1376
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige