Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Option Compare Database
- Option Explicit
- Sub Test()
- With New VisioInterface
- .OpenVisioDrawing "C:myVisioFile.vsd", "Custom drawing title"
- End With
- End Sub
- Option Compare Database
- Option Explicit
- Private Const VISIO_CLASS_ID As String = "Visio.Application"
- Public Sub OpenVisioDrawing(ByVal filename As String, someData As String)
- Dim app As Object
- Set app = GetVisioInstance()
- ActivateVisioInstance app
- Dim drawing As Object
- Set drawing = LoadVisioDrawing(app, filename)
- VisioScreenUpdating app, False
- SyncVisioDrawing drawing, someData
- Dim window As Object
- Set window = DetermineDesiredVisioWindow(app, drawing)
- ActivateVisioWindow window
- MaximizeVisioWindow window
- VisioScreenUpdating app, True
- End Sub
- Private Function GetVisioInstance() As Object
- If VisioInstanceExist() Then
- Set GetVisioInstance = AttachVisioInstance()
- Else
- Set GetVisioInstance = StartVisioInstance()
- End If
- End Function
- Private Function VisioInstanceExist() As Boolean
- On Error Resume Next
- Dim visioApp As Object
- Set visioApp = GetObject(, VISIO_CLASS_ID)
- VisioInstanceExist = Not visioApp Is Nothing
- End Function
- Private Function AttachVisioInstance() As Object
- Set AttachVisioInstance = GetObject(, VISIO_CLASS_ID)
- End Function
- Private Function StartVisioInstance() As Object
- Set StartVisioInstance = CreateObject(VISIO_CLASS_ID)
- End Function
- Private Sub ActivateVisioInstance(ByRef app As Object)
- AppActivate app.window.Caption
- End Sub
- Private Function LoadVisioDrawing(ByRef app As Object, ByVal filename As String) As Object
- Const visOpenRW = &H20
- Set LoadVisioDrawing = app.Documents.OpenEx(filename, visOpenRW)
- End Function
- Private Sub SyncVisioDrawing(ByRef drawing As Object, ByVal someData As String)
- drawing.Title = someData
- End Sub
- Private Function DetermineDesiredVisioWindow(ByRef app As Object, ByRef drawing As Object) As Object
- Dim window As Object
- For Each window In app.Windows
- If window.Document Is drawing Then
- Set DetermineDesiredVisioWindow = window
- If window.Caption Like "*:2 *" Then
- Set DetermineDesiredVisioWindow = window
- Exit Function
- End If
- End If
- Next
- End Function
- Private Sub ActivateVisioWindow(ByRef window As Object)
- window.Activate
- End Sub
- Private Sub MaximizeVisioWindow(ByRef window As Object)
- Const visWSMaximized = &H40000000
- window.WindowState = visWSMaximized
- End Sub
- Private Sub VisioScreenUpdating(ByRef app As Object, ByVal allow As Boolean)
- app.ScreenUpdating = allow
- End Sub
- Private Function VisioInstanceExist() As Boolean
- On Error Resume Next
- Dim visioApp As Object
- Set visioApp = GetObject(, VISIO_CLASS_ID)
- VisioInstanceExist = Not visioApp Is Nothing
- End Function
- Private Function GetVisioInstance() As Object
- Dim visioApp As Object
- On Error Resume Next
- Set visioApp = GetObject(, VISIO_CLASS_ID)
- If visioApp Is Nothing Then
- GetVisioInstance = StartVisioInstance
- Else
- Set GetVisioInstance = visioApp()
- End If
- End Function
Add Comment
Please, Sign In to add comment