【问题标题】:How do I create an executable application for a Excel macro procedure?如何为 Excel 宏过程创建可执行应用程序?
【发布时间】:2011-01-12 08:29:34
【问题描述】:

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

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

我可以使用 C# 编写一个可以做到这一点的简单应用程序吗?

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

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

【问题讨论】:

    标签: c# excel excel-2007 vba


    【解决方案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 时自动运行。

    【讨论】:

      【解决方案2】:
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        您也可以考虑使用 Old 作为模板或按照另一个答案中的建议编写新模板“compare.xlt”。

        【讨论】:

          猜你喜欢
          • 2012-01-08
          • 1970-01-01
          • 1970-01-01
          • 2015-05-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-20
          相关资源
          最近更新 更多