Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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 :)

Lg
Alex
Antworten 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...ion=topics&forum=AutoCAD+VBA&number=259&DaysPrune=365&LastLogin=&mystyle=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)
Antworten 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
Antworten 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 Smile

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

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

   end with
End Sub
Antworten Top
#7
Hallo snb

hab es gerade probiert und es funktioniert nicht  Huh
Antworten 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-2019+365)
Antworten Top
#9
open_dwt rufe ich wenn AutoCAD geschlossen ist
Antworten Top
#10
Wink 
Hier ist ein Video wie das alles ausseht 

https://youtu.be/sWd_2QiQxz8
Antworten Top


Gehe zu:


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