Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Excel VBA: Datei als Workbook definieren
Frage
Hallo zusammen,
ich habe folgenden Code (auszug) erstellt, der auch funktioniert
[code]
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
[code]
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 1 von Marie
Set oWBExterneDatei = ActiveWorkbook
strDatei = Dir()
oWBExterneDatei.Close
das verstehe ich eh nicht?? Was tut das Teil??
gruß Marie
strDatei = Dir()
oWBExterneDatei.Close
das verstehe ich eh nicht?? Was tut das Teil??
gruß Marie
Antwort 2 von snailhouse
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
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
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
Set oWBExterneDatei = ActiveWorkbook
lies doch den Namen des aktiven Workbooks aus bevor jemand woanders hinklicken kann.
ActiveWorkbook.Name
Antwort 4 von snailhouse
Hallo,
nun, ich definiere mir erst zwei workbooks, einmal für die Datei in die die Dateien eingelesen werden
und einmal für die Datei(en) aus denen die Daten ausgelesen werden.
In der While-Schleife werden nach und nach die Dateien in dem Verzeichnis ausgelesen (nächste folgt jeweils bei
Mit
schließe ich die aktuell geöffnete Datei.
Dieses Workbook wird mit jeder neu geöffneten Datei neu zugeordnet
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.
nun, ich definiere mir erst zwei workbooks, einmal für die Datei in die die Dateien eingelesen werden
dim oWBDaten as WorkBook
Set oWBDaten = ThisWorkbookund einmal für die Datei(en) aus denen die Daten ausgelesen werden.
dim oWBExterneDatei as WorkBookIn der While-Schleife werden nach und nach die Dateien in dem Verzeichnis ausgelesen (nächste folgt jeweils bei
strDatei = Dir().)Mit
oWBExterneDatei.Closeschließ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
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
Workbooks.Open (strVerzeichnis & strDatei)
Set oWBExterneDatei = GetObject(strVerzeichnis & strDatei)
oWBExterneDatei.Close
Gruß Marie
Antwort 6 von snailhouse
Hallo Marie,
vielen Dank, so hat es funktioniert!
Gruß
Jürgen
vielen Dank, so hat es funktioniert!
Gruß
Jürgen

