65.9K
CodeProject 正在变化。 阅读更多。
Home

SourceTools.xla

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.47/5 (13投票s)

2007年3月15日

GPL3

4分钟阅读

viewsIcon

240996

downloadIcon

3495

用于使用 SVN 或 CVS 比较和版本控制 VBA 的 VBE IDE 插件。

引言

SourceTool 是一个实用工具插件,用于

  1. 从 Excel 工作簿、模板和插件中提取和加载源代码
  2. 比较上述不同版本之间的源代码
  3. 将源代码提交、更新、还原和比较到与 VSS 不同的版本控制系统中(目前仅支持通过 TortoiseSVN 的 SVN)

大部分功能都基于 Rob Bovey 著名的 CodeCleaner 插件,该插件在这里被滥用为“SourceStripper”。

可以通过 VBA IDE 中的“Source”工具栏访问各种功能

Screenshot - clip_image002.jpg
  • 第一个按钮用于打开项目或项目的选定组件(通用模块、类模块或用户窗体)。打开时,文件夹选择对话框允许选择要从中加载组件的目录,保存会自动完成到 Excel 文件所在目录下的一个名为 <Excelfilename>.src 的文件夹中。

    Screenshot - clip_image004.jpg

  • 第二个按钮用于保存项目或项目的选定组件(通用模块、类模块或用户窗体)。
  • 第三个按钮允许选择所选项目的不同版本(这仅适用于整个项目),并使用预配置的差异查看器(目前是 WinMerge 2.4.6)显示差异。

分隔符之后,其余按钮都用于版本控制。

  • 第四个按钮调用工具,检查当前内存中的整个项目或选定组件与存储库中的基线版本之间的差异。
  • 第五个按钮从存储库更新整个项目或选定组件,并通知任何冲突。
  • 第六个按钮将整个项目或选定组件提交到存储库,并在提交前要求输入日志消息。
  • 最后,第七个按钮从存储库还原整个项目或选定组件。

安装和配置

首先,您需要安装 tortoiseSVNsubversion(如果您还没有连接到基于网络的存储库)。

然后,您需要安装 WinMerge 来使用 diff 工具。

最后,只需将 SourceTools.xla 复制到您的 XLStart 文件夹即可完成安装。您还必须在菜单中启用对 VB 项目的访问:工具/宏/安全性,选项卡“受信任的数据源”,勾选“信任对 Visual Basic Project 的访问”。

配置在 MGlobals 模块中完成,主要使用以下六个常量。

' SVN control commands, if needed, replace with other

Public Const COMMITCMD = "C:\Programme\TortoiseSVN\bin\TortoiseProc.exe
    /command:commit /notempfile /path:"
Public Const UPDATECMD = "C:\Programme\TortoiseSVN\bin\TortoiseProc.exe
    /command:update /rev /notempfile /path:"
Public Const REVERTCMD = "C:\Programme\TortoiseSVN\bin\TortoiseProc.exe
    /command:revert /notempfile /path:"
Public Const DIFFCMD = "C:\Programme\TortoiseSVN\bin\TortoiseProc.exe
    /command:diff /path:"
Public Const PATHCONCAT = "*"
Public Const DIFFERCMD = "C:\Programme\WinMerge\WinMergeU.exe "

但是,我确信在使用不同的版本控制系统时,还需要进一步的定制。

用法

首先要做的就是通过单击第二个按钮来保存项目的源代码。这应该会创建一个名为 <Workbook/AddinName>.src 的目录,其中包含您项目的所有组件,这些组件以文本文件的形式存在(普通模块为 *.bas,类为 *.cls,用户窗体为 *.frm/*.frx,工作簿和工作表的代码为 *.xwk)。所以基本上,您将获得单独导出每个组件所得到的所有内容。

然后,您应该将 Workbook/Addin<Workbook/AddinName>.src 文件夹都导入到您选择的存储库中(在 Sourceforge.net 或您的私有/本地存储库中(如果您不需要自己的存储库,可以忽略 SVN 下载,Tortoise 就足够了)。

之后,删除 Workbook/Addin*.src 文件夹(或者更好的是,将它们移到一个安全的地方,以防后续的 checkout 失败)。一旦删除这些文件/文件夹,然后 CHECKOUT 您刚刚导入到文件夹中的文件(或任何其他文件夹,但这表示您正在更改插件/工作簿的位置)。

请记住,这仍然是完全在 Sourcetool 外部完成的,使用纯粹的 TortoiseSVN 功能。
现在您已准备好使用 SourceTool:只需像往常一样编辑您的项目,完成后单击 VBA-IDE 中的 sourcetool 工具栏上的 commit 按钮(第六个按钮),您将看到 Tortoise commit 对话框,显示

  1. 自上次更新以来发生变化的所有组件(如果您选择了项目节点)
  2. 仅您选定的组件(如果已更改,如果它是最新的,Tortoise 会告诉您)

通过按第五个按钮可以更新您的项目/单个组件,该按钮从存储库下载最新版本并将组件文件导入到您的项目中。

已知问题/局限性

如果使用通用的(通过 shell 调用)版本客户端,则必须添加进一步的输入对话框(例如,用于输入日志消息)。

关注点

  • 强大的版本工具 subversion 及其酷炫的基于 Windows Explorer 的客户端 tortoiseSVN,我现在大量使用它们来进行 VBA 源代码版本控制。
  • 另请参阅 Rob Bovey 的网站,其中提供了 CodeCleaner 插件(现在也可作为 COM 组件使用),它构成了源代码保存的基础。

历史

  • 2007/03/15:首次发布到 The Code Project
  • 09/04/2007
    • Bug 修复:加载现在适用于整个项目
    • 增强功能:添加了 Stephen Bullens 的 VBEOnKey 以启用快捷键
  • 10/05/2007
    • Bug 修复:因存在多个严重副作用而再次移除 VBEOnKey (常规调用 VBA 代码不太健康…)
  • 2008/04/04:向文章添加了“使用方法”部分
© . All rights reserved.