2017-08-09 135 views
0

我在Excel 2010中编写了一些VBA宏。 源代码使用TortoiseHG进行管理。 但是我找不到比较2种不同提交的流畅方式,因为TortoiseHG只显示完整的excelfile,而不是我编写代码的不同的VBA文件。 如果有人以一种很好而平滑的方式完成这项工作, d很乐意得到一些想法。 也可以使用像BeyondCompare这样的外部工具。比较两个excel VBA项目

谢谢!

回答

1

对于VBA代码:

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

有关自身的Excel文件比较:

对于比较实际XLSM,可以考虑保存文件,更改扩展到.zip和提取拉链内容。 版本2007及更高版本的Excel文件实际上是一个存档,其中包含定义整个工作簿的XML和用于VBA项目的.bin文件。 你可能想通过XMLLint或类似的工具来拉取所说的xmls,因为默认情况下它们不是很漂亮。

旁注:

你问一个漂亮和流畅方式 - 我想说的有在Excel本身没有。您可以使用VBA在Workbook_BeforeClose()事件上执行这些模块导出,但您会遇到一些安全问题 - 默认情况下,您不允许从内部访问VBProject。 当然,还有一些第三方工具用于比较VBA代码而不必提取模块,但“使用什么”将严重影响观点--BeyondCompare确实是一种选择。

希望这会有所帮助。

0

Beyond Compare有一个附加文件格式来比较Excel文件中的VBA代码。从Additional File Formats for BC4页面下载Microsoft Excel工作簿VBA文件格式。