Finally I found a way to write VISIO MACRO from Visual Studio using Visual Basic.
Refer http://support.microsoft.com/kb/303872
Dim vsoDoc As Microsoft.Office.Interop.Visio.Document
Dim objPrj As Microsoft.Vbe.Interop.VBProject
Dim objModule As Microsoft.Vbe.Interop.VBComponent
Dim CR_LF As String = Chr(10) & Chr(13)
' Create a new Visio application
vsoDoc = Application.Documents.Add("")
' Get VB project object
objPrj = vsoDoc.VBProject
' SetVBComponents
' If VBComponents is 0, append macros to "ThisDocument"
objModule = objPrj.VBComponents(0)
' Define macro
strCode = "Private Sub Document_PageChanged(ByVal Page As IVPage)" & CR_LF & _
"test" & CR_LF & _
"End Sub"
' Write macro to ThisDocument
objModule.CodeModule.AddFromString(strCode)
' SetVBComponents
' If VBComponents is not 0, append macros to other module (e.g., Module1)
objModule = objPrj.VBComponents.Add(VBA.vbext_ComponentType.vbext_ct_Document)
' Define macro
strCode = "sub VBAMacro()" & CR_LF & _
" msgbox ""VBA Macro called""" & CR_LF & _
"end sub"
' Write macro to Module1
objModule.CodeModule.AddFromString(strCode)
P.S When executing above code, I had an error, "Programmatic access to Office VBA project is denied". This error is occurred because Microsoft disables VBA project execution for security purpose. So, to resolve this error, follow guidelines provided by Microsoft.
http://support.microsoft.com/kb/282830
댓글 없음:
댓글 쓰기