Prüfen ob eine Applikation geöffnet ist oder nicht
#1
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 Smile

Lg
Alex
Antwortento top
#2
Hallo Alex!
Findest Du nicht, dass Du eher in einem AutoCAD-VBA-Forum besser aufgehoben wärst?
http://ww3.cad.de/cgi-bin/ubb/forumdispl...tyle=AUGCE

Damit 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)
Antwortento top
#3
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
Antwortento top
#4
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-2016)
Antwortento top
#5
Hallo schauan Smile

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")
Antwortento top
#6
Ich fürchte dass diese Code reicht:

Code:
sub M_snb()
   with Getobject(ThisWorkbook.path & "\FLW40_FLG40.dwt")

   end with
End Sub
Antwortento top
#7
Hallo snb

hab es gerade probiert und es funktioniert nicht  Huh
Antwortento top
#8
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-2016)
Antwortento top
#9
open_dwt rufe ich wenn AutoCAD geschlossen ist
Antwortento top
#10
Wink 
Hier ist ein Video wie das alles ausseht 

https://youtu.be/sWd_2QiQxz8
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste