Excel VBA: Datei als Workbook definieren
Hallo zusammen,
ich habe folgenden Code (auszug) erstellt, der auch funktioniert
Do While strDatei <> "" ' BEGINN Schleife zum Durchforsten der Dateien im Verzeichnis
lDatensatzzaehler = lDatensatzzaehler + 1
Workbooks.Open (strVerzeichnis & strDatei)
Set oWBExterneDatei = ActiveWorkbook ' gibts eine BESSERE MÖGLICHKEIT ???????????????
strDatei = Dir()
oWBExterneDatei.Close
Loop ' ENDE Schleife zum Durchforsten der Dateien im Verzeichnis
Allerdings gefällt mir der Teil
[zitat]
Set oWBExterneDatei = ActiveWorkbook
[/zitat]
nicht, weil hier (falls der Benutzer in eine andere Datei klickt) die falsche Datei als "oWBExterneDatei " definiert wird.
Wie löse ich das Problem eleganter?
Im voraus vielen Dank für Eure Hilfe !
Gruß
Jürgen
Antwort schreiben
Antwort 1 von Marie vom 12.11.2019, 20:14 Options
Set oWBExterneDatei = ActiveWorkbook
strDatei = Dir()
oWBExterneDatei.Close
das verstehe ich eh nicht?? Was tut das Teil??
gruß Marie
Antwort 2 von snailhouse vom 12.11.2019, 23:21 Options
Hallo Marie,
leider hat mir das noch nicht weitergeholfen (ich sehen den Unterschied zu meinem Text nicht..).
Das Makro öffnenet nach-und-nach verschiedene Messtabellen und extrahiert daraus einzelne Messwerte, die dann in einer Datei zum Auswerten zusammengeführt werden.
Der Code oben funktioniert zwar so, aber wenn der Benutzer während das Makro läuft in eine andere Datei klickt, dann wir doch diese Datei fälschlicherweise als "ActiveWorkbook" verwendet....
Set oWBExterneDatei = ActiveWorkbook
Gruß Jürgen
Antwort 3 von Marie vom 12.11.2019, 23:32 Options
da ist kein Unterschied, ich habe dich Gefragt was die drei zeilen bewirken. Warum schreibst Du überhaupt
Set oWBExterneDatei = ActiveWorkbook
lies doch den Namen des aktiven Workbooks aus bevor jemand woanders hinklicken kann.
ActiveWorkbook.Name
Antwort 4 von snailhouse vom 13.11.2019, 00:19 Options
Hallo,
nun, ich definiere mir erst zwei workbooks, einmal für die Datei in die die Dateien eingelesen werden
dim oWBDaten as WorkBook
Set oWBDaten = ThisWorkbook
und einmal für die Datei(en) aus denen die Daten ausgelesen werden.
dim oWBExterneDatei as WorkBook
In der While-Schleife werden nach und nach die Dateien in dem Verzeichnis ausgelesen (nächste folgt jeweils bei
strDatei = Dir()
.)
Mit
oWBExterneDatei.Close
schließe ich die aktuell geöffnete Datei.
Dieses Workbook wird mit jeder neu geöffneten Datei neu zugeordnet
Set oWBExterneDatei = ...
Was ich nun suche, ist eine Lösung, wie ich dieser Datei (von der ich Verzeichnis und Dateiname kenne (strVerzeichnis & strDatei) eindeutig das Workbook
oWBExterneDatei zuweisen kann, ohne es über
ActiveWorkbook zu lösen.
Das Makro liest sehr viele Dateien ein und da kann es evtl. doch passieren, dass während das Makro läuft in eine andere Datei geklickt wird und diese dann als ActiveWorkbook erkannt wird.
Antwort 5 von Marie vom 13.11.2019, 01:33 OptionsLösung
Hm ich kenne mich in Excel nicht wirklich aus, aber ich denke doch, dass es das sein müsste, was Du suchst?
Workbooks.Open (strVerzeichnis & strDatei)
Set oWBExterneDatei = GetObject(strVerzeichnis & strDatei)
oWBExterneDatei.Close
Gruß Marie
Antwort 6 von snailhouse vom 13.11.2019, 21:09 Options
Hallo Marie,
vielen Dank, so hat es funktioniert!
Gruß
Jürgen