Запустите макрос VBA для листа Excel с C # - PullRequest
2 голосов
/ 27 сентября 2011

Можно ли написать приложение WPF C #, которое может загружать и считывать макрос VBA из отдельного текстового файла, открывать существующую книгу Excel и обрабатывать макрос VBA для нее?

Я НЕ пытаюськонвертировать VBA в C # или генерировать VBA из C #.Приложение, текстовый файл макроса VBA (VBA извлекается и сохраняется отдельно в текстовом файле) и Excel все пишутся / генерируются отдельно разными людьми.

Приложение загрузит и прочитает текстовый файл, содержащий VBA, откроет существующий файл Excel и запустит для него макрос, введя макрос в Excel или даже лучше, оставив книгу без макроса.

Я понятия не имею, как и с чего начать, или если это вообще возможно.Шкаф, который я нашел в SO, - это Внедрение макроса кода VBA в Excel с использованием .net , но, похоже, это не помогает.Я ищу любое предложение, чтобы начать, и я поделюсь и обновлю свой прогресс здесь.

1 Ответ

3 голосов
/ 28 сентября 2011

Вот способ добавить немного VBA из файла в VBA (не должно быть так сложно адаптировать его к C #, но я недостаточно знаком с синтаксисом C #):

Function Insert_VBACode(ByRef oWB As Workbook)
    Dim oVBP As VBProject   ' VB Project Object
    Dim oVBC As VBComponent ' VB Component Object
    On Error GoTo Err_VBP
    Set oVBP = oWB.VBProject
    Set oVBC = oVBP.VBComponents.Add(vbext_ct_StdModule)
    oVBC.CodeModule.AddFromFile "c:\VBADUD\Templates\MSample.bas"
    oWB.Application.Run "'" & oWB.name & "'!SayHello"
    oWB.Save
End Function

[Источник] (посмотрите, хотите ли вы добавить какую-либо обработку ошибок, которую я удалил здесь, для большей читабельности).
Вы также можете открыть книгу вместо того, чтобы принимать ее в качестве аргумента функции.

И затем вы можете вызвать импортированный макрос из C # благодаря этому пошаговому описанию из MSDN.

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