如何为Excelmacros程序创build可执行应用程序?

我有两个电子表格(“旧”和“新”)和一个VB脚本macros。 macros运行在一个(“新build”)中,对另一个(“旧”)的内容进行比较,然后将结果输出回“新build”电子表格。

我想build立一个可执行文件,我input两个文件名,然后点击一个运行button来简化这个过程。 当前的程序需要打开这两个文件,然后剪切并粘贴到“New”的VB编辑器中并在那里运行它。 我正在寻找build议,以什么编程语言或工具,我可以使用在Windows XP中创build此应用程序运行在Excel 2007中创build的电子表格。

我可以使用C#编写一个可以执行此操作的简单应用程序吗?

如果您可以指向我写关于编写C#应用程序与Excel交互的资源,将不胜感激。

这是我第一次尝试编写与Excel交互的应用程序。 也许这是不可能的。 如果是这样,请让我知道。

为什么不创build一个名为“Compare.Xls”的excel文件,该文件将使用以下代码来允许用户select文件并对其运行比较

Dim fd As FileDialog Dim sOldFile As String Dim sNewFile As String Set fd = Application.FileDialog(msoFileDialogOpen) fd.AllowMultiSelect = False MsgBox "Please Select the Old File" fd.Show Workbooks.Open fd.SelectedItems(1) sOldFile = ActiveWorkbook.Name MsgBox "Please Select the New File" fd.Show Workbooks.Open fd.SelectedItems(1) sNewFile = ActiveWorkbook.Name 

它可以使用一些进一步的错误检查,如确保用户没有select取消或按下文件对话框上的转义,但它应该允许您创build一个文件上的button,并从两个用户select的文件。

编辑:我也想过这个,你可以添加一个调用你的macros在ThisWorkbook Workbook_Open下,并让它自动运行,只要有人打开Compare.Xls。

有可能的。

以下是关于这个问题的一些很好的教程:

  1. http://www.eggheadcafe.com/articles/create_macro_at_runtime_in_dotnet.asp
  2. http://support.microsoft.com/kb/306683

我在Open office org中定义了macros,我使用batch file从命令行执行macros。 batch file是使用C#执行的。 使用ProcessStartInfo和Process Class。 您可能知道您可以以隐藏模式运行batch file,也可以从输出stream中返回结果(如果有的话)。

也许你可以考虑写一个“New”作为excel模板,在实例化时运行一个打开“Old”的macros,比较并保存到新文档中。

你也可以考虑使用Old作为模板或者写一个新的模板“compare.xlt”,如另一个答案中的build议。