【问题标题】:How to script Excel 2013's Spreadsheet Compare?如何编写 Excel 2013 的电子表格比较脚本?
【发布时间】:2012-11-22 01:33:09
【问题描述】:

我正在尝试将 Excel 2013 的 Inquire Add-in 中新奇的 Spreadsheet Compare 函数合并到 VBA 脚本中。

计划是有一个宏来自动比较具有预定义名称的两个电子表格,并将所有差异导出为新电子表格。

迄今为止没有成功。

这是我迄今为止尝试过的:

  1. 通常,要了解如何自动化某些 Excel 功能,我会使用 Record Macro。
  2. 如果失败,我会查看可添加的引用列表,看看我是否遗漏了一些明显的东西。

在这种情况下,这两个都失败了。当我录制一个宏时,没有出现与电子表格比较相关的代码(只出现了像单元格选择这样的外围东西)。并且没有任何可添加的引用看起来像电子表格比较。

那么,如何从 VBA 编写 Excel 的 2013 电子表格比较脚本?

【问题讨论】:

  • +1 好问题。我会在周末回家访问 xl13 时看看这个。
  • [我删除了我之前的评论,因为它是胡言乱语...] 方法调用将可用,因为它是一个 COM 插件,所以如果所有其他方法都失败,您可以使用 Visual Studio 撕入 dll 以查看它公开的方法然后像 FileSystemObject 一样从 vba 自动化它。如果你扔了正确的 XML 转换,我没有读过关于 excel 插件的任何内容都无法重现。
  • 这也是我用来进行自动化的两种方法。你有什么实际问题?录制宏时没有出现代码?代码出现了但是太复杂了?在引用中找不到 COM 插件?
  • @ElectricLlama 感谢您的提示 - 我已经用您的问题的答案更新了问题
  • Spearsheet 比较链接失效。这是一篇旧文章,但如果你有一组固定的参数,写起来不会花很长时间。

标签: vba excel office-2013 excel-2013


【解决方案1】:

你不能。

VBA 不包括在这种情况下的插件。

电子表格比较是被微软吞并的第三方插件。

如果您需要可编写脚本的比较,您可以在网上找到对每个单元格、每一行执行的比较...类似的东西。

【讨论】:

    【解决方案2】:

    我打开了一个 similar question 用于从 .NET 应用程序自动执行电子表格比较工具,但除了从命令行执行它之外,我还没有找到任何其他方法。

    您可以从您的 VBA 加载项中执行此操作。您只需要找到可执行文件 SPREADSHEETCOMPARE.EXE(通常在 C:\Program Files (x86)\Microsoft Office\Office15\DCF 中),并在命令行中使用指令文件作为输入参数执行它。

    此指令文件必须是一个 ASCII 文件,两个 Excel 文件路径以单独的行进行比较。

    【讨论】:

      【解决方案3】:
      1. 创建一个 runCompare.cmd 文件:

        REM Execute from command line spreadsheetcompare.exe 
        REM 
        cd C:\Program Files (x86)\Microsoft Office 2013\Office15\DCF
        spreadsheetcompare.exe  C:\reportNames.txt
        
      2. 在 C:\reportNames.txt 中,将要比较的 .xlsx 文件保存在同一行中:

        C:\fileA.xlsx C:\fileB.xlsx
        
      3. 执行 runCompare.cmd。

      【讨论】:

      • 在将文件名放在 2 条单独的行上之前,我无法让它工作。
      猜你喜欢
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 2015-10-15
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多