Guest User

Untitled

a guest
Feb 19th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. Option Compare Database
  2. Option Explicit
  3.  
  4. Sub Test()
  5. With New VisioInterface
  6. .OpenVisioDrawing "C:myVisioFile.vsd", "Custom drawing title"
  7. End With
  8. End Sub
  9.  
  10. Option Compare Database
  11. Option Explicit
  12.  
  13. Private Const VISIO_CLASS_ID As String = "Visio.Application"
  14.  
  15. Public Sub OpenVisioDrawing(ByVal filename As String, someData As String)
  16. Dim app As Object
  17. Set app = GetVisioInstance()
  18.  
  19. ActivateVisioInstance app
  20.  
  21. Dim drawing As Object
  22. Set drawing = LoadVisioDrawing(app, filename)
  23.  
  24. VisioScreenUpdating app, False
  25.  
  26. SyncVisioDrawing drawing, someData
  27.  
  28. Dim window As Object
  29. Set window = DetermineDesiredVisioWindow(app, drawing)
  30.  
  31. ActivateVisioWindow window
  32.  
  33. MaximizeVisioWindow window
  34.  
  35. VisioScreenUpdating app, True
  36. End Sub
  37.  
  38. Private Function GetVisioInstance() As Object
  39. If VisioInstanceExist() Then
  40. Set GetVisioInstance = AttachVisioInstance()
  41. Else
  42. Set GetVisioInstance = StartVisioInstance()
  43. End If
  44. End Function
  45.  
  46. Private Function VisioInstanceExist() As Boolean
  47. On Error Resume Next
  48. Dim visioApp As Object
  49. Set visioApp = GetObject(, VISIO_CLASS_ID)
  50. VisioInstanceExist = Not visioApp Is Nothing
  51. End Function
  52.  
  53. Private Function AttachVisioInstance() As Object
  54. Set AttachVisioInstance = GetObject(, VISIO_CLASS_ID)
  55. End Function
  56.  
  57. Private Function StartVisioInstance() As Object
  58. Set StartVisioInstance = CreateObject(VISIO_CLASS_ID)
  59. End Function
  60.  
  61. Private Sub ActivateVisioInstance(ByRef app As Object)
  62. AppActivate app.window.Caption
  63. End Sub
  64.  
  65. Private Function LoadVisioDrawing(ByRef app As Object, ByVal filename As String) As Object
  66. Const visOpenRW = &H20
  67. Set LoadVisioDrawing = app.Documents.OpenEx(filename, visOpenRW)
  68. End Function
  69.  
  70. Private Sub SyncVisioDrawing(ByRef drawing As Object, ByVal someData As String)
  71. drawing.Title = someData
  72. End Sub
  73.  
  74. Private Function DetermineDesiredVisioWindow(ByRef app As Object, ByRef drawing As Object) As Object
  75. Dim window As Object
  76. For Each window In app.Windows
  77. If window.Document Is drawing Then
  78. Set DetermineDesiredVisioWindow = window
  79. If window.Caption Like "*:2 *" Then
  80. Set DetermineDesiredVisioWindow = window
  81. Exit Function
  82. End If
  83. End If
  84. Next
  85. End Function
  86.  
  87. Private Sub ActivateVisioWindow(ByRef window As Object)
  88. window.Activate
  89. End Sub
  90.  
  91. Private Sub MaximizeVisioWindow(ByRef window As Object)
  92. Const visWSMaximized = &H40000000
  93. window.WindowState = visWSMaximized
  94. End Sub
  95.  
  96. Private Sub VisioScreenUpdating(ByRef app As Object, ByVal allow As Boolean)
  97. app.ScreenUpdating = allow
  98. End Sub
  99.  
  100. Private Function VisioInstanceExist() As Boolean
  101. On Error Resume Next
  102. Dim visioApp As Object
  103. Set visioApp = GetObject(, VISIO_CLASS_ID)
  104. VisioInstanceExist = Not visioApp Is Nothing
  105. End Function
  106.  
  107. Private Function GetVisioInstance() As Object
  108. Dim visioApp As Object
  109. On Error Resume Next
  110. Set visioApp = GetObject(, VISIO_CLASS_ID)
  111. If visioApp Is Nothing Then
  112. GetVisioInstance = StartVisioInstance
  113. Else
  114. Set GetVisioInstance = visioApp()
  115. End If
  116. End Function
Add Comment
Please, Sign In to add comment