Makro Excel -> Visio

hey!
ich habe folgendes problem. ich möchte, dass in excel via vba eine bestimte zeichnung in visio aufgerufen wird und dazu ein entsprechendes makro ausgeführt wird

_If Breite > Höhe Then
Set VisioD = Visio.Application.Documents.Open(path & „\quer.vsd“)
Else
Set VisioD = VisioApp.Application.Documents.Open(path & „\hochkant.vsd“)
End If

Set VisioApp = GetObject(, „Visio.Application“)
If Err.Number 0 Then
Set VisioApp = CreateObject(„Visio.Application“)
End If

With VisioApp
.Visible = True
.Run „Einlesen“
End With_

allerdings führt er bisher den Makro nicht aus, sprich in der 2.letzten zeile (.run „einlesen“) will er nicht, der rest ist in ordnung

Hat jemand eine idee?
grüße und danke im voraus

Johannes

Set VisioApp = GetObject(, „Visio.Application“)
If Err.Number 0 Then
Set VisioApp = CreateObject(„Visio.Application“)
End If

With VisioApp
.Visible = True
.Run „Einlesen“
End With

Hi Soumi,

versuche mal das in diese Syntax umzubasteln:

.run „Dateiname!Einlesen“

Application.run „Dateiname!Einlesen“

Und schau mal in die Hilfe zu Visio, vielleicht kann man visio gleich mit eienm bestimmten makro starten.

Gruß
Reinhard

irgendwie funktioniert das immernoch nicht: laufzeitfehler 438 "Objekt unterstüzt diese eigenschaft oder methode nicht.
ich habs probiert mit:

  • .Run „Quer.vsd!Modul3.Einlesen“
  • .Run „Quer!Modul3.Einlesen“
  • .Run „Quer.vsd!Einlesen“
  • .Run „Quer!Einlesen“

und natürlich mit hoch(.vsd) wenn es das andere dokument geöffnet werden soll
auch versuchte ich jeweils mit dem absoluten pfad das makro zu starten.

Das makro funktioniert, wenn man es manuell aufruft, möchte ich aber aus unterschiedlichen gründen nicht.

PS: außerdem kann ich das makro nicht mit einem onopen oä aufrufen, weil excel erst noch in der zeichnung 3 daten hinterlassen muss

Hi Soumi,

was sagt die Hilfe in Visio zu Run?

nachfolgend das was die Word-Hilfe dazu sagt.

Gruß
Reinhard

Führt ein Visual Basic-Makro aus.

Syntax

Ausdruck.Run(MacroName, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9, varg10, varg11, varg12, varg13, varg14, varg15, varg16, varg17, varg18, varg19, varg20, varg21, varg22, varg23, varg24, varg25, varg26, varg27, varg28, varg29, varg30)

Ausdruck Erforderlich. Ein Ausdruck, der ein Application-Objekt zurückgibt.

MacroName String erforderlich. Der Name des Makros. Kann aus einer beliebigen Kombination von Dokumentvorlagen-, Modul- und Makroname bestehen. So sind beispielsweise die folgenden Aussagen gültig:

Application.Run „Normal.Module1.MAIN“
Application.Run „MyProject.MyModule.MyProcedure“
Application.Run „‚My Document.doc‘!ThisModule.ThisProcedure“
Wenn Sie den Namen des Dokuments festlegen, kann Ihr Code nur Makros in Dokumenten ausführen, die mit dem aktuellen Inhalt in Verbindung stehen, und nicht alle Makros in allen Dokumenten.

varg1…varg30 Variant optional. Parameterwerte für Makros. Sie können für das angegebene Makro bis zu 30 Parameterwerte festlegen.

Hinweise

Obwohl Visual Basic-Code ein Makro direkt (ohne Verwendung dieser Methode) aufrufen kann, ist diese Methode hilfreich, wenn der Makroname in einer Variable gespeichert ist (weitere Informationen finden Sie im Beispiel zu diesem Thema). Die folgenden Anweisungen erfüllen dieselbe Funktion.

Normal.Module2.Macro1
Call Normal.Module2.Macro1
Application.Run MacroName:=„Normal.Module2.Macro1“

visio sagt dazu (woraus ich nicht wirklich schlau werde):
Run method
See AlsoApplies ToExampleSpecifics
Runs the add-on represented by an Addon object.

object.Run (ArgString)
object Required. An expression that returns an Addon object.

ArgString Required String. The argument string to pass to the add-on.

Version added
4.0

Remarks
If the add-on is implemented by an EXE file, the arguments are passed in the command line string. If the add-on is implemented by a VSL file, the arguments are passed in a member of the argument structure that accompanies the run message sent to the VisioLibMain procedure of the VSL.

Security Use caution when running executable files or code in macros or applications. Executable files or code can be used to carry out actions that might compromise the security of your computer and data.

visio sagt dazu (woraus ich nicht wirklich schlau werde):

Hallo Soumi,

ich auch nicht. Mein Englisch langt grad für englische Befehle, bei längeren Fachtexten wirds schwierig.

Gehe zu Tante Google und such mal nach
vb create.object(„viso.application“) run
u.ä. Suchwörtern, also Wörter die im Code vorkommen müssen.

Such auch ohne Sprachfestlegung.

Gibt es keine Internetforen speziell zu Visio?

Gruß
Reinhard

Hallo Soumi,

scheinbar sind Foren zu Visio dünn gesät, ist ja kaum was zu finden.

Vielleicht findest du da was:

http://www.workstream.de/community/index.php

Gruß
Reinhard

hi!
ich habe per zufall in einem anderen forum gefunden, dass makros nicht über .run angesprochen werden… aber wie die nun angepsrochen werden fand ich leider da auch nicht…

nun bin ich der meinung, dass es vlt über das autoopen laufen lassen könnte, nur mit ein anderer felsen im weg und zwar:

eine autoopen?!

gibt es sowas bei visio?

hab mir meine frage selbst beantwortet und zwar(in das visio objekt):

Private Sub Document_DocumentOpened(ByVal doc As IVDocument)
Modul1.Daten_importieren
End Sub

und die daten hole ich mir über excel:

On Error Resume Next
Set ExcelProg = GetObject(, „Excel.Application“)
If Err.Number 0 Then 'wenn Excel nicht geöffnet ist
Set ExcelProg = CreateObject(„Excel.Application“)
End
End If
On Error GoTo 0
Excelpfad2 = Excel.Application.ActiveWorkbook.Path + „“ + Excel.Application.ActiveWorkbook.Name
ShpExcelPfad.Text = Excelpfad2
Activezellreihe = Excel.Application.ActiveCell.Row
ActiveZellspalte = Excel.Application.ActiveCell.Column

ich danke dir trotzdem vielmals für deine mühe, reinhard

grüße

Johannes

verdammt, es klappt nicht richtig!
damit visio über das autoopen excel wieder ansprechen kann, müsste das makro von excel beendet worden sein. das ist es aber noch nicht, da die autoopen von visio ja noch aktiv ist!

ICH HABE DIE ANTWORT!!!

http://www.microsoft.com/communities/newsgroups/en-u…
oder für diejenigen, die den link nicht besuchen wollen:

_Hi,

Probier mal mit „ExecuteLine“

Im folgenden code:

  • Visio diagram heisst: „Visio VBA Test.vsd“
  • Test-sub heisst: „ThisDocument.VisioTest“

Sub CallVisiomacro()

’ Add a reference to: Microsoft Visio 12.0 Type Library

Dim visApp As Visio.Application
Set visApp = New Visio.Application

Dim visDoc As Visio.Document
Set visDoc = visApp.Documents.Open(ThisWorkbook.Path & „\Visio VBA
Test.vsd“)

visDoc.ExecuteLine („ThisDocument.VisioTest“)

End Sub


Hope this helps,

Chris R[***]
Visio MVP_

Mit Excel Vba ein Visio Makro starten

http://www.microsoft.com/communities/newsgroups/en-u…
’ Add a reference to: Microsoft Visio 12.0 Type Library
Dim visApp As Visio.Application
Set visApp = New Visio.Application
Dim visDoc As Visio.Document
Set visDoc = visApp.Documents.Open(ThisWorkbook.Path &
„\Visio VBA
Test.vsd“)
visDoc.ExecuteLine („ThisDocument.VisioTest“)

Hallo Soumi,

ich habe mal den Betreff geändert für das Archiv falls mal jmd. dein Problem hat.

Gruß
Reinhard