2011-09-27 5 views
2

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

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

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

Я понятия не имею, как и с чего начать, или если это возможно. Шкаф, который я нашел на SO, - Injecting vba macro code into excel using .net, но, похоже, не помогает. Я ищу любое предложение, чтобы начать, и я поделюсь и уточню свой прогресс здесь.

+0

Вы можете поместить свой VBA в книгу Excel или добавить, а затем загрузить ее в excel и вызвать рутину, которую вам нужно запустить. –

ответ

3

Вот способ добавить 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 

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

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

+0

+ 1 за полезный ресурс, спасибо – KMC

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