2017-08-09 174 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文件格式。