从C#.Net(VS2008)操作VBA环境
我需要从C#addin操作应用程序的VBA环境,以便可以向由该addin创建的文档添加模块、事件处理程序等 我以前在VB.Net中做过,但不知道如何在C#中获取IDE对象。我只是缺少一个引用或使用指令?我在参考资料中看不到任何合适的东西 在VB.Net中,我引用了Microsoft.VisualBasic,并完成了以下操作:从C#.Net(VS2008)操作VBA环境,c#,vba,ide,C#,Vba,Ide,我需要从C#addin操作应用程序的VBA环境,以便可以向由该addin创建的文档添加模块、事件处理程序等 我以前在VB.Net中做过,但不知道如何在C#中获取IDE对象。我只是缺少一个引用或使用指令?我在参考资料中看不到任何合适的东西 在VB.Net中,我引用了Microsoft.VisualBasic,并完成了以下操作: Imports System Imports System.Collections.Generic Imports System.Collections.ObjectMod
Imports System
Imports System.Collections.Generic
Imports System.Collections.ObjectModel
Public Module VBA
Private m_VBEnv As VBIDE.VBE
Private m_dlg As AddInDialog
Private Structure EventHandler
Public objectName As String
Public eventName As String
Public action As String
End Structure
Private m_handlers As New Collection
Public Function InitVBA(ByVal app As PBObjLib.Application, ByVal dlg As AddInDialog, ByVal scrWidth As Integer, ByVal scrHeight As Integer) As Boolean
InitVBA = False
Try
m_dlg = dlg
m_VBEnv = DirectCast(app.VBE, VBIDE.VBE)
m_VBEnv.MainWindow.Height = 480
m_VBEnv.MainWindow.Width = 640
m_VBEnv.MainWindow.Left = (scrWidth - m_VBEnv.MainWindow.Width)
m_VBEnv.MainWindow.Top = ((scrHeight - m_VBEnv.MainWindow.Height) - 50)
m_VBEnv.MainWindow.WindowState = VBIDE.vbext_WindowState.vbext_ws_Minimize ' .vbext_ws_Normal
HideVBWindow()
InitVBA = True
Catch e As Exception
dlg.LogMessage(AddInDialog.LogLevel.Err, "Failed to initialise VBA: " & e.Message)
End Try
End Function
...
End Module
我在我的C#中添加了对Microsoft.VisualBasic的引用,但它无法识别VBIDE.VBE
另外,如何在C#中执行DirectCast位。这只是一个简单的演员阵容吗
有什么建议吗?答案是确保所有引用都是.NET引用。我有一个通讯器藏在那里。我删除了与VB相关的引用,重新加载了项目,添加了引用(这次全部是.NET),所有的引用都变为现实。答案是确保所有引用都是.NET引用。我有一个通讯器藏在那里。我删除了与VB相关的引用,重新加载了项目,添加了引用(这次全部是.NET),所有这些都变得栩栩如生