比较两个 excel VBA 项目



我正在Excel 2010中编写一些VBA宏。 源代码由 TortoiseHG 管理。 但是,我找不到比较 2 个不同提交的流畅方法,因为 TortoiseHG 只显示完整的 excel 文件,而不显示我正在编写代码的不同 VBA 文件。 如果有人以漂亮而流畅的方式完成了这项工作,我将很高兴得到一些想法。 也可以使用像BeyondCompare这样的外部工具。

谢谢!

对于 VBA 代码:

出于代码比较目的,我建议导出 VBA 模块并签入.bas(常规模块(和.cls(类模块(文件,并在.xlsm旁边检查它们。 那些导出的VBA模块实际上为您提供了代码的纯文本版本。工作表/工作簿模块中的代码也可以导出为.cls文件。这将允许TortoiseHG比较实际代码而不是Excel文件本身。

对于自身的 Excel 文件比较:

为了比较实际的XLSM,您可以考虑保存文件,将扩展名更改为.zip并提取zips内容。 版本 2007 及更高版本的 Excel 文件实际上是一个包含定义整个工作簿的 XML 和 VBA 项目的.bin文件的存档。 您可能希望通过XMLLint或类似的工具提取所述xml,因为它们默认情况下不是打印的。

旁注:

您要求一种漂亮而流畅的方式 - 我会说 Excel 本身中没有。您可以使用 VBA 对Workbook_BeforeClose()事件执行这些模块导出,但会遇到一些安全问题 - 默认情况下,不允许从内部访问 VBProject。 当然,有一些第三方工具可以比较VBA代码而无需提取模块,但是"使用什么"将严格基于意见 - BeyondCompare确实是一种选择。

希望这有帮助。

Beyond Compare 具有一种附加文件格式,用于比较 Excel 文件中的 VBA 代码。从 BC4 的其他文件格式页面下载 Microsoft Excel 工作簿 VBA 文件格式。

您可以导出每个模块,并使用 Windows 本机fc命令进行比较。

fc /N Module1 Module2 > Result.txt

帮助:

fc /?
Compares two files or sets of files and displays the differences between
them

FC [/A] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/U] [/W] [/nnnn]
[drive1:][path1]filename1 [drive2:][path2]filename2
FC /B [drive1:][path1]filename1 [drive2:][path2]filename2
/A         Displays only first and last lines for each set of differences.
/B         Performs a binary comparison.
/C         Disregards the case of letters.
/L         Compares files as ASCII text.
/LBn       Sets the maximum consecutive mismatches to the specified
number of lines.
/N         Displays the line numbers on an ASCII comparison.
/OFF[LINE] Do not skip files with offline attribute set.
/T         Does not expand tabs to spaces.
/U         Compare files as UNICODE text files.
/W         Compresses white space (tabs and spaces) for comparison.
/nnnn      Specifies the number of consecutive lines that must match
after a mismatch.
[drive1:][path1]filename1
Specifies the first file or set of files to compare.
[drive2:][path2]filename2
Specifies the second file or set of files to compare.

https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/fc

相关内容

  • 没有找到相关文章

最新更新