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