2016-11-11 2 views
0
Dim AppVisio  
    Set AppVisio = CreateObject("visio.InvisibleApp") 
    Dim vsoDoc 

    Set vsoDoc = AppVisio.Documents.Open("PathName\Drawing1.vsd") 

Hallo zu speichern,ohne vorhandene Visio-Datei schließen

Ich habe den obigen Code-Block eine Datei zu öffnen (das funktioniert). Wenn diese Datei jedoch bereits geöffnet ist, möchte ich, dass sie automatisch geschlossen wird, ohne die Änderungen zu speichern.

Leider sehr geschätzt wird, ich könnte keinen Code wie

AppVisio.Documents.Close ("PathName\Drawing1.vsd") 

Alle anderen Optionen finden zu schließen zwingen, die Datei geöffnet werden soll.

Antwort

2
Dim vsoDoc 

Sie es als ein impliziteVariant deklariert haben - dies wäre gleichbedeutend:

Dim vsoDoc As Variant 

Und wenn Sie sofort einen Haltepunkt platzieren gehen die Set vsoDoc = Anweisung, auf die unmittelbare Scheibe (Strg + G) und geben Sie

?TypeName(vsoDoc) 

Sie werden sehen, dass es Document gedruckt wird. Daher können Sie es mit einem Document Typ deklarieren statt:

Dim vsoDoc As Document 

Und dann, wenn Sie diese vsoDoc schließen möchten, arbeiten Sie mit dass Objekt und rufen seine Close Methode:

Set vsoDoc = AppVisio.Documents.Open("PathName\Drawing1.vsd") 
'do stuff... 
vsoDoc.Close 

That vsoDoc Variable ist Ihr Dokumentobjekt. Wenn Sie es in As Document deklarieren, erhalten Sie IntelliSense/AutoComplete. Wenn Sie also den Punkt in vsoDoc. eingeben, wird im Editor ein Dropdown-Menü mit allen Mitgliedern des Dokuments angezeigt.

Wenn Sie bereits in Visio sind, ist es nicht notwendig, alles zu spät zu binden. Sie bereits haben einen Verweis auf das Visio-Objektmodell. Eine frühe Bindung macht es viel einfacher zu wissen, um welche Typen es sich handelt und um welche Mitglieder es sich handelt.

1

Die Methode, die Sie suchen für einen Teil des Document-Objekt (nicht Dokumente) Click Here to see the Document Close Method

+0

Ja, aber wie würden Sie vorschlagen, ein unsichtbares Dokument zu schließen. Die Dokumentationen auf MSDN schlägt vor, ein aktives Dokument zu schließen. Was würden Sie vorschlagen, um das oben genannte Dokument zu schließen? Gibt es sowieso, um das Fenster zu "erfassen"? (unter der Annahme, dass er geöffnet ist und erzwinge ihn zu schließen) mit 'bei Fehler resume next'? – Dingo

+0

Vielen Dank für die Hilfe! – Dingo

Verwandte Themen