Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Excel von vbs aus starten

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Excel von vbs aus starten (1461 mal gelesen)
Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



Sehen Sie sich das Profil von Axel.Strasser an!   Senden Sie eine Private Message an Axel.Strasser  Schreiben Sie einen Gästebucheintrag für Axel.Strasser

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 09. Apr. 2009 09:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Um Datenauswertungen zu machen habe ich verschiedene vbs Scripts in denen mir eine Exceldatei erzeigt werden. Diese laufen teilweise lange und jetzt habe ich das Problem dass ich während der Laufzeit Excel nicht interaktiv starten kann. Er scheint dann immer auf die gleiche Excel Instanz zuzugreifen.

Ich starte Excel im vbs mit:

Code:

Set objXL = WScript.CreateObject("Excel.Application")
..
ExcelFile = OutDir & "Auswertung.xlsx" ' Excel Datei
..
Set objWB = objXL.Workbooks
objXL.Visible = False
objWB.Add (xlWBATWorksheet)
Set objWS = objXL.ActiveWorkBook.ActiveSheet
..
..
objXL.ActiveWorkBook.SaveAs ExcelFile
objWB.Close

Kann ich da was ändern so dass mir zum einen mein Script läuft, ich aber parallel dazu auch noch interaktiv auf Excel arbeiten kann.

Axel

------------------
Inoffizielle deutsche CATIA Hilfeseite  Netiquette von cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 09. Apr. 2009 09:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Axel.Strasser 10 Unities + Antwort hilfreich

Hallo Axel,
Zitat:
Er scheint dann immer auf die gleiche Excel Instanz zuzugreifen.
Kannst Du das ganze umgehen, indem Du eine weitere Instanz (vorher) (per Hand) öffnest und einer Var zuweist?

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



Sehen Sie sich das Profil von Axel.Strasser an!   Senden Sie eine Private Message an Axel.Strasser  Schreiben Sie einen Gästebucheintrag für Axel.Strasser

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 09. Apr. 2009 11:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich habe jetzt den Code noch umgeändert und die ganzen "activ" Sachen eliminiert:

Code:

ExcelFile = OutDir & "Auswertung.xlsx"
Set objXL = WScript.CreateObject("Excel.Application")
objXL.Visible = False
Set objWB = objXL.Workbooks.Add
objWB.SaveAs ExcelFile
objWB.Close

set objWB = objXL.WorkBooks.Open(Excelfile)
..

set objWS = objWB.WorkSheets(1)

With objWS
...


Damit sollte IMHO die Zuordnung zur Datei und zum Blatt eindeutig sein. Das läuft soweit gut, sobald ich aber während der Laufzeit wieder eine andere Excel Datei aufmache bekomme ich wieder den "Unbekannten Laufzeitfehler" mit dem Code 800AC472        

Das mit der Instanz kann doch nicht so ganz stimmen, da er im Taskmanager EXCEL mehrere Male drin hat, es wird also eine neue Instanz gestartet.

Axel

------------------
Inoffizielle deutsche CATIA Hilfeseite  Netiquette von cad.de

[Diese Nachricht wurde von Axel.Strasser am 09. Apr. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 09. Apr. 2009 11:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Axel.Strasser 10 Unities + Antwort hilfreich

Vielleicht hilft ein
Code:
set objXL = Nothing
zwischendrin zum "Entladen"? Sonst hoffen wir mal auf den Meister...

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



Sehen Sie sich das Profil von Axel.Strasser an!   Senden Sie eine Private Message an Axel.Strasser  Schreiben Sie einen Gästebucheintrag für Axel.Strasser

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 09. Apr. 2009 12:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Kann ich ja noch nicht, sonst schliesse ich mir ja das Excel während der Laufzeit. Am Schluss vom Script ist es klar.

Axel

------------------
Inoffizielle deutsche CATIA Hilfeseite  Netiquette von cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



Sehen Sie sich das Profil von Axel.Strasser an!   Senden Sie eine Private Message an Axel.Strasser  Schreiben Sie einen Gästebucheintrag für Axel.Strasser

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 16. Apr. 2009 09:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Also nur für die, die es mal brauchen, ich konnte es über einen Trick lösen:

Code:

set objXL_1 = WScript.CreateObject("Excel.Application")
Set objXL_2 = WScript.CreateObject("Excel.Application")
objXL_1.UserControl = False
objXL_1.Interactive = True
objXL_1.ScreenUpdating = False
objXL_1.Visible = False

Set objWB = objXL_1.Workbooks.Add
Set objWS = objWB.Worksheets.Add

...

objWB.SaveAs ExcelFile
objWB.Close

objXL_1.quit
set objXL_1 = Nothing

objXL_2.UserControl = True
objXL_2.Interactive = True
objXL_2.ScreenUpdating = True
objXL_2.Visible = True
set objWB = objXL_2.WorkBooks.Open(Excelfile)
objWB.Activate

WScript.quit


Dadurch kann ich während der Laufzeit des vbs andere Excelfiles aufmachen, bearbeiten, speichern. Ganz zum Schluss wird die erzeugte Datei aufgemacht. Komisch ist es auf jeden Fall. die ganzen objXL_1 Settings scheinen auch im vbs auch auf objXL_2 zu wirken und müssen dort deshalb explizit wieder eingeschaltet werden. Naja, auf jeden Fall so funktioniert es bis jetzt.

Axel

------------------
Inoffizielle deutsche CATIA Hilfeseite  Netiquette von cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz