2016-08-17 75 views
0

好的,我知道你可以使用Microsoft.Office.Interop.Excel;在c#程序中使用VBA命令。从C#运行宏?

我面临的问题是,我有一个接近10,000行代码的VBA,并将其转换为C#兼容命令是不现实的。它创建一个工作簿并执行数据操作和格式化,以按用户请求打印。

有没有办法在C#中存储宏,然后创建一个工作簿,然后我可以按原样运行宏?

+0

我从来没有用过但是Interop有Application.Run()方法来运行一个宏。 –

+0

这可能是有用的... http://stackoverflow.com/questions/9301354/inject-and-execute-excel-vba-code-into-spreadsheet-received-from-external-source – dazedandconfused

+0

http:// stackoverflow。 com/questions/38975802/excel-interop -c-sharp-cant-add-vbproject-error-800a03ec-on-workbook -vbproject -v/38978442?noredirect = 1#comment65333643_38978442相当新近 – prizm1

回答

0

您可以像运行Excel一样运行宏。 看看这个:

Running an Excel Macro via C#: Run a macro from one workbook on another?

http://oakdome.com/programming/CSharp_RunExcelMacro.php

如果你不希望Excel在执行过程中可以看到,对于Excel.ApplicationClass的Visible属性设置为false。

+0

这运行一个外部文件。我想避免这种情况,这意味着应用程序必须知道每个用户PC上的文件位置。 – KyloRen

+1

您可以拥有一个Excel文件,该文件是运行宏的标准模型。在运行时,您可以克隆模型并导入或以编程方式为克隆创建数据,然后运行宏。 – Alvimar