PDA

Vollständige Version anzeigen : VBScript: Mappe Öffnen/Speichern ok, aber nicht alle Blätter werden abgearbeitet


_B_
15.02.2007, 15:36
Hallo!

Bin neu hier, hoffe hier etwas Hilfe zu finden.

Zur Automation eines Datenimportes verwende ich (zumindest möchte ich das) ein VB-Script, das eine Mappe öffnet, wartet bis diese alle Daten importiert hat, die Mappe speichert und Excel dann beendet. Das Ganze ist in ein Perlskript eingebettet und wird von dort als system()-call gestartet.

Die Excel-Datei ist wie folgt beschaffen: In einem Verzeichnis liegen verschiedene .xls-Dateien, die jeweils Daten enthalten. Eine weitere Exceldatei (die oben angesprochene) liest - bei der Benutzung mittels Doppelklick - aus diesen Dateien Daten ein, pro externer Datei gibt es ein Blatt (Sheet) in das die Daten importiert werden. Bspw. sind das 10 externe Dateien, meine eigentliche Mappe hat also 10 Blätter. Blatt für Blatt - gut zu sehen an der Prozentanzeige in der Statusleiste von Excel - werden die Daten eingelesen. Die Prozentanzeige läuft dann wunderbar 10 mal durch. Soweit funktioniert alles prima.

Rufe ich jetzt die Excelmappe über das VB-Script auf - Excel-Objekt erzeugen, Mappe öffnen, Objekt sichtbar machen - beginnt Excel unmittelbar mit dem Import der Daten. Ganz so wie es passiert, wenn man die Datei mit einem Doppelklick öffnet. Allerdings findet nur ein Import statt. Die Prozentanzeige läuft einmal bis 100, dann erscheint "Bereit" in der Statusleiste und das VB-Script setzt seine Arbeite fort: Speichern und Beenden.

Wie unterscheidet sich der Aufruf per Doppelklick von einem Mappe-Öffnen per VB-Objekt? Wie kann ich einen Aufruf per VB-Script, der identisch mit einem Doppelklick ist, erzeugen? Möglicherweise muss ich durch alle Blätter iterieren und in einer Schleife etwas manuell machen, was sonst automatisch passiert.

Für jede Anregung oder Hilfe bin ich dankbar.

Beste Grüße

Sebastian

J_Eilers
16.02.2007, 05:52
Moin,

wenns etwas Zeit hat, weil ich nicht wirklich hier aktiv teilnehmen kann. Zeige mal bitte deinen Code. Von wo nach wo sollen die Daten? Mappe sichtbar machen ist "bäh", denn ein Klick in die Mappe kann den ganze Code durcheinander bringen.

_B_
16.02.2007, 11:55
danke schon mal für deine antwort!

so, das ist jetzt alles andere als spektakulär, bin kein vbscript-mensch. also nicht lachen.


Dim objXl
Set objXl = WScript.CreateObject("Excel.Application")
objXl.visible = true
objXl.Workbooks.open "M:\Forecast\Forecast Branches.xls"
objXl.ActiveWorkbook.Save
objXl.quit


das isses. nicht schön, macht aber fast alles, was es soll.

gruss

sebastian

J_Eilers
19.02.2007, 05:55
Tja, da kann ich nur nicht so viel mit anfangen. Ausser öffnen und schließen machst du dort nichts, was mir Hinweise geben könnten, wo dein Problem liegt. Wie werden denn deine Daten kopiert?

Claus Kreksch
04.03.2007, 20:32
Hallo Sebastian,
ich glaube Dein Problem liegt daran das Du nach dem Öffnen der Excel-Datei diese sofort wieder schließt ohne das Ende Deines Imports abzuwarten. Das Script hat ja keine Ahnung wann die Datei damit fertig ist und schließt eben bei der ersten Möglichkeit wieder.
Gruß Claus