Управление средой VBA из C # .Net (VS2008) - PullRequest
1 голос
/ 31 августа 2010

Мне нужно управлять средой 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 #. Это простой актерский состав?

Есть предложения?

1 Ответ

1 голос
/ 13 октября 2010

Ответ состоял в том, чтобы все ссылки были .NET-ссылками.У меня там был СОМ один.Я удалил ссылки, связанные с VB, перезагрузил проект, добавил ссылки (на этот раз все .NET) и все это ожило.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...