Supportnet Computer
Planet of Tech

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

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

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

Antwort 4 von snailhouse

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

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

Hallo Marie,

vielen Dank, so hat es funktioniert!

Gruß
Jürgen