Ausgehend von den im Beitrag "Klasse Light / AcDbLight" genannten Umständen geht es darum in einem ACAD-VBA-Programm zunächst zu ermitteln, ob auf dem Rechner bereits eine Excelinstanz läuft, damit diese gegebenenfalls einer Objektvariablen zugewiesen werden kann.
Im VBA kann ich zwar eine neue Instanz von Excel erzeugen, aber keine laufende Instanz fehlerfrei(zuverlässig) ermitteln.
......
Dim EKSL As Excel.Application, Mappe As Excel.Workbook, Blatt As Excel.Worksheet
Set EKSL = New Excel.Application
.....
Die von mir ausprobierte Lösung
Function IstExcelGestartet(EKSL) As Boolean
' prüft, ob Excel schon gestartet ist
'04.04.2008
On Error GoTo Fehler
Set EKSL = GetObject(, "Excel.application")
IstExcelGestartet = True
Mfalsch:
On Error GoTo 0
Exit Function
Fehler:
'wenn excel noch nicht gestartet ist erzeugt der getobject-Aufruf den Fehler 429
'MsgBox Err.Number
IstExcelGestartet = False
Resume Mfalsch
End Function
arbeitet nicht zuverlässig.
Ich habe noch so dunkel in Erinnerung, daß es im Windows-API eine Funktion gibt mittels der man sie laufende Instanzen beliebiger Programme melden lassen kann. Das Problem meinerseits besteht jetzt darin , daß ich mir die DLL (user32.dll) nicht laden kann. Siehe hierzu auch die Screen Shots im Anhang. Meine Frage: Geht das im VBA generell nicht oder habe ich einen Fehler in der Verfahrensweise?
------------------
MfG
Günter
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP