Hallo zusammen, seit Tagen versuche ich ein Problem zu lösen und komme nicht weiter.
Aus einem Excel-Makro möchte ich ein MS Visio Makro aufrufen. Beide Makros für sich (Excel+Visio) funktionieren wunderbar. Das Problem ist, dass ich das Visio Makro jedoch aus dem Excel Makro aufrufen möchte (muss!). Das Ergebnis des Excel Makros ist ein mehrdimensionaler und variabler Vektor. Der Aufruf des Visiomakros funktioniert. Die Übergabe des Vektors jedoch nicht. Momentan versuche ich es auf diesem Weg:
Public Sub Visio()
Dim VisioApp As Object
Dim VisioFile As String
Dim VisioDoc As Object
ReDim Ergebnis(1 To Zahl, 1 To 10))
VisioFile = "C:\Users\VisioDoc.vsdm"
Set VisioApp = CreateObject("Visio.Application")
VisioApp.Documents.Open VisioFile
Set VisioDoc = VisioApp.ActiveDocument
VisioDoc.ExecuteLine ("Anpassung Ergebnis") 'Anpassung ist der Name des Visio Makros, Ergebnis ist der Vektor den ich übergeben möchte
End Sub
Das Visio Makro sieht stark verkürzt wie folgt aus:
Sub Anpassung(Ergebnis)
Dim a As String
a=Ergebnis(1,5)
MsbBox(a)
End Sub
Wie gesagt startet das Visio Makro ohne Probleme. Der Vektor "Ergebnis" wir jedoch nicht vom Excel Makro zum Visio Makro übergeben (von Excel Dokument zu Excel Dokument funktioniert es ohene Probleme).
Weiß jemand von euch wie ich mein Ergebnis in das Visio-Makro übergeben kann? Bin für jede Hilfe dankbar. Im Netz habe ich übrigens das hier gefunden, was mir jedoch nicht weiterhelfen konnte:
'Executes the macro (procedure without an argument) named "SomeMacro"
'that is in some module of the Visual Basic project of ThisDocument.
ThisDocument.ExecuteLine("SomeMacro")
'Executes the procedure named SomeProcedure and passes it 3 arguments.
ThisDocument.ExecuteLine("SomeProcedure 1, 2, 3")
'Same as previous example, but procedure name qualified
'with module name.
ThisDocument.ExecuteLine("Module1.SomeProcedure 1, 2, 3")
'Shows the form UserForm1.
ThisDocument.ExecuteLine("UserForm1.Show")
'Prints "some string" to the Immediate window.
ThisDocument.ExecuteLine("Debug.Print ""some string""")
'Prints number of open documents to the Immediate window.
ThisDocument.ExecuteLine("Debug.Print Documents.Count")
'Tells ThisDocument to save itself.
ThisDocument.ExecuteLine("ThisDocument.Save")
LG Schorsch
|