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
Please also mark the comments that contributed to the solution of the article
Content-Key: 264380
Url: https://administrator.de/contentid/264380
Printed on: April 24, 2024 at 19:04 o'clock
2 Comments
Latest comment
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