Мне нужно управлять средой VBA приложения из надстройки C #, чтобы я мог добавлять модули, обработчики событий и т. Д. В документы, созданные надстройкой.
Я уже делал это в VB.Net, но не вижу, как добраться до объекта IDE в C #. Я просто пропускаю ссылку или директиву Using? Я не вижу ничего подходящего в ссылках.
В VB.Net у меня есть ссылка на Microsoft.VisualBasic , и я сделал это:
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
Я добавил ссылку на Microsoft.VisualBasic на мой C #, но он не распознает VBIDE.VBE.
Кроме того, как бы я сделал бит DirectCast в C #. Это простой актерский состав?
Есть предложения?