Come automatizzare Visio con Visual Basic .NET
Riepilogo
Questo articolo illustra come automatizzare Visio usando Visual Basic .NET.
Ulteriori informazioni
Il codice di automazione di esempio in questo articolo esegue le operazioni seguenti:
- Disegna un semplice diagramma di flusso nella pagina di disegno di Visio basato sui dati contenuti in una matrice.
- Assegna un nome alla pagina.
- Salva il documento.
La matrice è bidimensionale: il primo elemento contiene il nome della forma e il secondo elemento contiene il testo della forma.
Procedura per creare l'applicazione Visual Basic .NET di esempio
Avviare Microsoft Visual Studio .NET. Scegliere Nuovo dal menu File e quindi fare clic su Progetto. In Tipi di progetto fare clic su Progetti di Visual Basic e quindi su Applicazione Windows in Modelli. Form1 viene creato per impostazione predefinita.
Aggiungere un riferimento alla libreria di oggetti di Visio. A tal fine, attenersi alla seguente procedura:
- Scegliere Aggiungi riferimento dal menu Progetto.
- Nella scheda COM fare clic su una delle opzioni seguenti e fare clic su Seleziona:
- Per Visio 2007, fare clic su Libreria dei tipi di Microsoft Visio 12.0.
- Per Visio 2003, fare clic su Libreria dei tipi di Microsoft Visio 11.0.
- Per Visio 2002, fare clic su Libreria dei tipi di Microsoft Visio 2002.
Nota Se non è già stato fatto, Microsoft consiglia di scaricare e installare gli assembly di interoperabilità primari di Microsoft Office XP.
Fare clic su OK nella finestra di dialogo Aggiungi riferimenti per accettare le selezioni. Se viene richiesto di generare wrapper per le librerie selezionate, fare clic su Sì.
Scegliere ToolBox dal menu Visualizza. Aggiungere un pulsante a Form1.
Fare doppio clic su Button1. La finestra del codice viene aperta in corrispondenza dell'evento Click per Button1.
Nella finestra del codice sostituire il codice seguente
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click End Sub
Con:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click fBuildArray() fBuildFlowchart() End Sub
Scegliere Aggiungi modulo dal menu Progetto.
Sostituire il contenuto di Module1 con quanto segue:
Module Module1 Public aryValues(5, 2) As String Sub fBuildArray() aryValues(0, 0) = "Terminator" aryValues(1, 0) = "Document" aryValues(2, 0) = "Decision" aryValues(3, 0) = "Process" aryValues(4, 0) = "Terminator" aryValues(0, 1) = "Begin Routing Process" aryValues(1, 1) = "Gather Customer Data" aryValues(2, 1) = "Supported Issue?" aryValues(3, 1) = "Dispatch to Queue" aryValues(4, 1) = "End Routing Process" End Sub Sub fBuildFlowchart() Dim vApp As Visio.Application Dim vDoc As Visio.Document Dim vFromShape As Visio.Shape Dim vToShape As Visio.Shape Dim vConnector As Visio.Shape Dim vFlowChartMaster As Visio.Master Dim vConnectorMaster As Visio.Master Dim vStencil As Visio.Document Dim dblXLocation As Double Dim dblYLocation As Double Dim vBeginCell As Visio.Cell Dim vEndCell As Visio.Cell Dim iCount As Integer Const TEMPLATEPATH = "C:\Program Files\Microsoft Office\Visio10\1033\" _ & "Solutions\Flowchart\Basic Flowchart Shapes (US units).vss" ' Change this constant to match your choice of location and file name. Const SAVENEWFILE = "C:\Simpleflowchart.vsd" ' Start point measured from the bottom left corner. dblXLocation = 4.25 dblYLocation = 8.5 vApp = New Visio.Application() 'Create a new document; note the empty string. vDoc = vApp.Documents.Add("") vStencil = vApp.Documents.OpenEx(TEMPLATEPATH, 4) For iCount = LBound(aryValues) To UBound(aryValues) - 1 vFlowChartMaster = vStencil.Masters(aryValues(iCount, 0)) vToShape = vApp.ActivePage.Drop(vFlowChartMaster, _ dblXLocation, dblYLocation) vToShape.Text = aryValues(iCount, 1) If Not vFromShape Is Nothing Then If vConnectorMaster Is Nothing Then vConnectorMaster = vStencil.Masters("Dynamic Connector") End If vConnector = vApp.ActivePage.Drop(vConnectorMaster, 0, 0) vBeginCell = vConnector.Cells("BeginX") vBeginCell.GlueTo(vFromShape.Cells("AlignBottom")) vEndCell = vConnector.Cells("EndX") vEndCell.GlueTo(vToShape.Cells("AlignTop")) vConnector.SendToBack() End If vFromShape = vToShape vToShape = Nothing dblYLocation = dblYLocation - 1.5 Next vDoc.Pages(1).Name = "Flowchart Example" Try ' Delete the previous version of the file. Kill(SAVENEWFILE) Catch End Try vDoc.SaveAs(SAVENEWFILE) vDoc.Close() vApp.Quit() vDoc = Nothing vApp = Nothing GC.Collect() End Sub End Module
Nota Modificare la costante TEMPLATEPATH in modo che punti alla cartella di installazione di Visio. Per impostazione predefinita, il percorso è uno dei seguenti:
Per Office Visio 2007, il percorso predefinito è C:\Programmi\Microsoft Office\Visio12\1033\BASFLO_U.VSS.
Per Visio 2003, il percorso predefinito per questo file è C:\Programmi\Microsoft Office\Visio11\1033\BASFLO_U.VSS
Per Visio 2002, il percorso predefinito per questo file è C:\Programmi\Microsoft Visio\Visio10\1033\Solutions\Flowchart\Basic Flowchart Shapes (US units).vss.
Scegliere Avvia dal menu Debug.
Aprire C:\Simpleflowchart.vsd in Visio per visualizzare i risultati.
Riferimenti
Per altre informazioni, vedere il seguente sito Web Microsoft Developer Network (MSDN):