我们可以使用C#for Excel编写macros吗?

我必须在excel中进行大约25页的操作。我使用vba进行操作,发现速度非常慢,因此想知道是否可以使用C#,如果这样做会帮助我加快进程。

从Excel工作簿像VBAmacros调用C# – 你不能

从C#应用程序访问Excel工作簿 – 你可以。 这被称为Microsoft Visual Studio Tools for Office( VSTO )

尽pipe你可以使用VSTO在C#中编写相当于当前的VBAmacros,但是我很怀疑它是否会对性能产生重大影响。

在这两种情况下,您都将操纵相同的Excel COM对象,执行时间可能非常相似。

您的性能将主要取决于您用于操作Excel对象的技术。 作为一个简单的例子,您可以在一个语句中将Excel范围中的值分配给2维数组:这比迭代代码中的行和列并将值逐个复制到数组中要快得多。

我build议你发布一些你觉得太慢的VBA代码,并要求提高性能的提示。

您可以尝试使用我的EShaper附加程序在C#中编写Excel自动化命令。 这比创build一个单独的C#应用​​程序或加载项更容易,并且您将有权访问Excel对象模型和Excel C API,并提供更多性能优化选项。

你在做什么操作? 首先你不需要事件需要写自己的VBA代码。 您可以简单地logging工作簿中的一个macros并将其保存在C:\ ProgramFiles \ Microsoft Office \ Office12 \ Xlstart中。 Excel将logging一个macros,并使其在您打开的所有工作表中都可用。

您也可以在上述过程中调整自动生成的VBA代码以适合您的需要。

就个人而言,我不认为写一个C#插件做这个工作会加快任务。 VBA是专门用于Office对象模型的语言。 如果这样做不够快,那么你需要看看你正在执行什么操作?

我认为创build一个C#加载项来操纵Excel对象模型并维护它是太多了。 这也将涉及一个很大的学习曲线。