Registriert seit: 03.06.2016
	
Version(en): 2016
	
 
	
		
		
		06.07.2016, 07:04 
(Dieser Beitrag wurde zuletzt bearbeitet: 06.07.2016, 08:44 von Kuwer.
 Bearbeitungsgrund: Betreff berichtigt
)
		
	 
	
		Hallo liebe Leute
ich hab da einen VBA der prüfen soll ob eine Applikation (ein Programm wie in diesem Beispiel 
AutoCAD) geöffnet ist.
Wenn 
JA dann soll ein 
Sub hervorgerufen werden und wenn 
NEIN soll ich eine Meldung bekommen 
dass AutoCAD geschlossen ist.Code:
Sub runsub(control As IRibbonControl)
Dim acadApp As AcadApplication
Dim acadDoc As AcadDocument
If acadApp Is Nothing Then
MsgBox "AutoCAD nicht offen"
Else
Call Zeichnung
End If
End Sub
   Kann mir jemand dabei bitte helfen :)
Lg
Alex
	
 
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 12.10.2014
	
Version(en): 365 Insider (64 Bit)
	
 
	
	
		Hallo Alex!
Findest Du nicht, dass Du eher in einem AutoCAD-VBA-Forum besser aufgehoben wärst?
http://ww3.cad.de/cgi-bin/ubb/forumdisplay.cgi?action=topics&forum=AutoCAD+VBA&number=259&DaysPrune=365&LastLogin=&mystyle=AUGCEDamit Du aber dennoch eine Antwort erhältst:
Warum nicht einfach eine neue Instanz?
Für Word aus Excel heraus ginge dies (gesetzten Verweis vorausgesetzt):
Sub RPP()
Dim objWord As New Word.Application
With objWord
   .Documents.Add
   .Visible = True
   .Activate
End With
End Sub
oder einfacher auch dies:
Sub RPP2()
Application.ActivateMicrosoftApp xlMicrosoftWord
End Sub
Letzteres hat den Vorteil, dass eine neue Instanz nur dann angelegt wird, wenn Word noch geschlossen ist.
Aber wie gesagt:
Da ich kein AutoCAD besitze, weiß ich nicht, ob die erste Variante bei Dir funktioniert.
Gruß Ralf
	
 
	
	
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
	
	
 
 
	
	
	
		
	Registriert seit: 03.06.2016
	
Version(en): 2016
	
 
	
	
		Hallo Ralf
und vielen Dank für die nette Antwort 
Ich hab das schon mit einer Funktion und einem Sub gelöst 
Code:
Function IsAppRunning(ByVal sAppName) As Boolean
    Dim oApp As Object
    On Error Resume Next
    Set oApp = GetObject(, sAppName)
    If Not oApp Is Nothing Then
        Set oApp = Nothing
        IsAppRunning = True
    End If
End Function
Sub runsub(control As IRibbonControl)
If Not IsAppRunning("AutoCAD.Application") Then
MsgBox "AutoCAD ist geschloßen!!!"
Else
If ActiveSheet.Name = "FLW" Then
Call Zeichnung
Else
Call fll
End If
End If
End Sub
Und es funktioniert so wie ich es mir vorgestellt habe 
Das Problem ist nur dass ich ab und zu einen Laufzeitfehler bekomme "
Laufzeitfehler '462': Der Remote-Server-Computer existiert nicht oder ist nicht verfügbar."Und es taucht immer auf, wenn ich den Makro das Zweite mal Starte.Schöne Grüße 
Alex
Alex
	
 
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 10.04.2014
	
Version(en): 97-2019 (32) + 365 (64)
	
 
	
		
		
		06.07.2016, 14:28 
(Dieser Beitrag wurde zuletzt bearbeitet: 06.07.2016, 14:28 von schauan.)
		
	 
	
		Hallo Ralf,
man kann ja aus Excel heraus prüfen, welche Applicationen laufen. Das deutet ja auch darauf hin:
Zitat:If ActiveSheet.Name = "FLW" The
Da gehe ich doch ins Excelforum und nicht in das der Application 

Hallo Alex,
in welcher Zeile kommt denn der Fehler? Ich hab die Calls mal auskommentiert und den Paramater bei Sub ... rausgenommen. Da ich kein AutoCAD habe ist es immer geschlossen. Die entsprechende Meldung kommt auch nach dem 5. Aufruf ...
	
 
	
	
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
	
	
 
 
	
	
	
		
	Registriert seit: 03.06.2016
	
Version(en): 2016
	
 
	
	
		Hallo schauan :)
Viele Dank für deine Zuschrift.
Also wie gesagt, die Sub´s  
Zeichnung und
 fll haben die Aufgabe eine dwg in AutoCAD zu öffnen. 
So lautet der 
Sub:
Code:
Option Explicit
Public ThisDrawing As AcadDocument
Sub open_dwt()
Set ThisDrawing = AutoCAD.Documents.Add(ThisWorkbook.path & "\FLW40_FLG40.dwt")
ThisDrawing.Activate
End Sub
Ich versuche als erstes den Makro zu testen wenn AutoCAD geschlossen ist und dann bekomme ich die Meldung "AutoCAD muss offen sein". Und so soll es sein. Dann öffne ich AutoCAD, starte den Makro und es funktioniert wie geplant. Aber wenn ich AutoCAD zu mache und den Makro runsub() noch mal testen möchte bekommen ich den Laufzeitfehler. 
Wenn ich auf Debugg klicke wird die Zeile (sehe unten) gelb gestrichelt.
Code:
Set ThisDrawing = AutoCAD.Documents.Add(ThisWorkbook.path & "\FLW40_FLG40.dwt")
 
	 
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 29.09.2015
	
Version(en): 2030,5
	
 
	
	
		Ich fürchte dass diese Code reicht:
Code:
sub M_snb()
   with Getobject(ThisWorkbook.path & "\FLW40_FLG40.dwt")
   end with
End Sub
 
	 
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 03.06.2016
	
Version(en): 2016
	
 
	
	
		Hallo snb
hab es gerade probiert und es funktioniert nicht  
	 
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 10.04.2014
	
Version(en): 97-2019 (32) + 365 (64)
	
 
	
	
		Hallöchen,
wann rufst Du denn
open_dwt
auf? Ich habe in den bisher geposteten codes keinen entsprechenden Aufruf gefunden.
	
	
	
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
	
	
 
 
	
	
	
		
	Registriert seit: 03.06.2016
	
Version(en): 2016
	
 
	
	
		open_dwt rufe ich wenn AutoCAD geschlossen ist
	
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 03.06.2016
	
Version(en): 2016
	
 
	
		
		
 
		06.07.2016, 15:01 
		
	 
	
		Hier ist ein Video wie das alles ausseht 
https://youtu.be/sWd_2QiQxz8