MS Excel版本控制的最佳方法[已关闭]

关闭。这个问题是基于意见的。它目前不接受答案。

<hr class=“my12大纲无baw0 bb bc-POWER-400”/

想改进这个问题吗?编辑这篇文章,更新这个问题,以便用事实和引文来回答。

去年关闭了

改进这个问题

您在MS Excel(2003/2007)中使用了哪些版本控制系统?您会推荐什么?为什么?您发现您的顶级版本控制系统存在哪些限制

为了更好地理解这一点,这里有几个用例:

  1. VBA模块的版本控制
  2. 多人正在处理Excel电子表格,他们可能正在对同一工作表进行更改,并希望合并和集成该工作表。此工作表可能包含公式、数据、图表等
  3. 用户技术性不强,使用的版本控制系统越少越好
  4. 空间限制是一个考虑因素。理想情况下,只保存增量更改,而不是保存整个Excel电子表格

我刚刚设置了一个使用Bazaar的电子表格,通过TortiseBZR手动签入/签出。鉴于该主题帮助我完成了保存部分,我想在这里发布我的解决方案

我的解决方案是创建一个电子表格,在保存时导出所有模块,在打开时删除并重新导入模块。是的,这可能会对转换现有电子表格造成潜在危险。

这允许我通过Emacs(是的,Emacs)或在Excel中以本机方式编辑模块中的宏,并在重大更改后提交我的BZR存储库。因为所有模块都是文本文件,BZR中的标准diff样式命令适用于我的源,Excel文件本身除外

我已经为我的BZR存储库设置了一个目录,X:\Data\MySheet。在repo中,我的每个模块都有MySheet.xls和一个.vba文件(即:module1宏)。在我的电子表格中,我添加了一个不受导出/导入周期限制的模块,称为“VersionControl”。要导出和重新导入的每个模块都必须以“宏”结尾

版本控制模块的内容:

子SaveCodeModules()
'此代码导出所有VBA模块
昏昏欲睡$
使用ThisWorkbook.VBProject
对于i%=1到.VBComponents.Count
如果.VBComponents(i%).CodeModule.CountOfLines&gt;0,则
sName$=.VBComponents(i%).CodeModule.Name
.VBComponents(i%)。导出“X:\Tools\MyExcelMacros\”&amp;sName$&amp;“.vba”
如果结束
接下来我
以
端接头
子导入解调器()
使用ThisWorkbook.VBProject
对于i%=1到.VBComponents.Count
ModuleName=.VBComponents(i%).CodeModule.Name
如果ModuleName&lt;&gt;“版本控制”,则
如果正确(ModuleName,6)=“宏”,则
.VBComponents.Remove.VBComponents(模块名称)
.VBComponents.Import“X:\Data\MySheet\”和ModuleName&amp;“.vba”
如果结束
如果结束
接下来我
以
端接头

接下来,我们必须为打开/保存设置事件挂钩以运行这些宏。在代码查看器中,右键单击“ThisWorkbook”并选择“查看代码”。您可能必须下拉代码窗口顶部的选择框,才能从“(常规)”视图更改为“Workbook”视图

工作簿视图的内容:

专用子工作簿\u Open()
进口蠕形螨
端接头
私有子工作簿\u在保存之前(ByVal SaveAsUI为布尔值,Cancel为布尔值)
SaveCodeModules
端接头

在接下来的几周里,我将适应这个工作流程,如果我有任何问题,我会发布

感谢分享VBComponent代码

发表评论