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
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
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
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 ...
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")
Ich fürchte dass diese Code reicht:
Code:
sub M_snb()
with Getobject(ThisWorkbook.path & "\FLW40_FLG40.dwt")
end with
End Sub
Hallo snb
hab es gerade probiert und es funktioniert nicht
Hallöchen,
wann rufst Du denn
open_dwt
auf? Ich habe in den bisher geposteten codes keinen entsprechenden Aufruf gefunden.
open_dwt rufe ich wenn AutoCAD geschlossen ist