2010-08-31 3 views
1

Мне нужно манипулировать средой VBA приложения из C# addin, чтобы я мог добавлять модули, обработчики событий и т. Д. В документы, созданные аддином.Манипулировать средой VBA из C# .Net (VS2008)

Я делал это раньше в VB.Net, но не вижу, как добраться до объекта IDE на C#. Я просто пропустил ссылку или инструкцию по использованию? Я не вижу ничего подходящего в ссылках.

В 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

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

Смежные вопросы