Instanz suchen und schließen
Hallo Admins,
ich schlage mich mit folgendem Problem herum, vielleicht weiß jemand wie das geht:
Mein Code ist ein Datenauswerteprozess mittels VBA und Excel.
Aufgrund der großen Datenmengen bzw. vieler geöffneter Dokumente wird mit mehreren Instanzen gearbeitet.
Konkret:
- eine (Excel-) Vorlage mit VBA-Code öffnet ein anderes Dokument und führt darin eine Function aus
- diese Function öffnet wiederum mehrere Dokumente in jeweils einer neuen Instanz
- die Vorlage greift dann auf diese Dokumente zu und schließt sie anschließend
Mein Problem:
Die Instanzen wurden nicht von diesem Dokument geöffnet. Daher kann ich sie nicht ansprechen.
Code-Beispiel:
Public Sub AddData()
'strActiveWorkbook = Mappe mit diesem Sub
'strInputWorkbook = Pfad zur geöffneten Inputdatei mit eigener Instanz
Set objInputWorkbook = GetObject(strInputWorkbook)
Set objExcel = GetObject(, "Excel.Application") ' -> liefert Instanz der aktuellen Mappe (falsch)
...(Bearbeitung)...
objInputWorkbook.Close SaveChanges:= False
objExcel.Quit ' schließt die falsche Instanz, Auswertung bricht ab
End Sub
Wie schafft man es die Excelinstanz auch zu schließen? Dürfte wahrscheinlich easy sein, aber ich komm nicht drauf...
Danke und viele Grüße
ich schlage mich mit folgendem Problem herum, vielleicht weiß jemand wie das geht:
Mein Code ist ein Datenauswerteprozess mittels VBA und Excel.
Aufgrund der großen Datenmengen bzw. vieler geöffneter Dokumente wird mit mehreren Instanzen gearbeitet.
Konkret:
- eine (Excel-) Vorlage mit VBA-Code öffnet ein anderes Dokument und führt darin eine Function aus
- diese Function öffnet wiederum mehrere Dokumente in jeweils einer neuen Instanz
- die Vorlage greift dann auf diese Dokumente zu und schließt sie anschließend
Mein Problem:
Die Instanzen wurden nicht von diesem Dokument geöffnet. Daher kann ich sie nicht ansprechen.
Code-Beispiel:
Public Sub AddData()
'strActiveWorkbook = Mappe mit diesem Sub
'strInputWorkbook = Pfad zur geöffneten Inputdatei mit eigener Instanz
Set objInputWorkbook = GetObject(strInputWorkbook)
Set objExcel = GetObject(, "Excel.Application") ' -> liefert Instanz der aktuellen Mappe (falsch)
...(Bearbeitung)...
objInputWorkbook.Close SaveChanges:= False
objExcel.Quit ' schließt die falsche Instanz, Auswertung bricht ab
End Sub
Wie schafft man es die Excelinstanz auch zu schließen? Dürfte wahrscheinlich easy sein, aber ich komm nicht drauf...
Danke und viele Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 264380
Url: https://administrator.de/forum/instanz-suchen-und-schliessen-264380.html
Ausgedruckt am: 23.04.2025 um 03:04 Uhr
2 Kommentare
Neuester Kommentar

Moin,
von einem Workbook kannst du dir die Excel-Instanz holen
https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.wo ...
Gruß jodel32
von einem Workbook kannst du dir die Excel-Instanz holen
set otherExcelInstance = objInputWorkbook.Application
https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.wo ...
Gruß jodel32