如何为Excel宏过程创建可执行应用程序?

时间:2010-02-02 20:47:04

标签: c# excel excel-vba excel-2007 vba

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

我想构建一个可执行文件,我输入两个文件名,然后单击一个运行按钮来简化此过程。当前过程需要打开两个文件,然后将脚本剪切并粘贴到VB编辑器“New”并在那里运行。我正在寻找有关在Windows XP中使用哪种编程语言或工具来创建此应用程序以针对在Excel 2007中创建的电子表格运行的建议。

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

如果您可以向我指出有关编写C#应用程序以与Excel交互的资源,那将非常感激。

这是我第一次尝试编写与Excel交互的应用程序。也许这是不可能的。如果是这种情况,请告诉我。

4 个答案:

答案 0 :(得分:1)

为什么不创建一个名为“Compare.Xls”的excel文件,它将使用以下代码来允许用户选择文件并对它们运行比较

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

它可以使用一些进一步的错误检查,比如确保用户没有选择取消或在文件对话框上按下转义,但是它应该允许您在1个文件上创建一个按钮并在两个文件上运行比较用户选择的文件。

编辑:我也考虑过这个问题,您可以在Workbook_Open下的ThisWorkbook中添加对您的宏的调用,并在有人打开Compare.Xls时自动运行。

答案 1 :(得分:0)

答案 2 :(得分:0)

我在Open office org中定义了宏,我使用批处理文件从命令行执行宏。 批处理文件是使用C#执行的。 使用ProcessStartInfo和Process Class。 你可能知道 您可以在隐藏模式下运行批处理文件,也可以从输出流中返回结果(如果有的话)。

答案 3 :(得分:0)

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

您还可以考虑使用Old作为模板或编写新模板“compare.xlt”,如另一个答案所示。