3

我正在使用 Excel 2010。我在后台 (VBA) 中有一些代码,这些代码不时增长。我正在尝试找到一种将源代码与 xls 文件分开的方法,以便我可以比较代码更改。换句话说,我希望代码在一个文本文件中,并且每次我打开 Excel 文件时,都会从这个文件中获取宏的源代码。

提前致谢!

4

4 回答 4

2

看看这个关于 SO 的问题。

它提到了名为 SourceTools 的插件,我已经使用并发现它值得。
此外,它附带源代码,因此可以对其进行修改以将其指向特定于您使用的源代码控制软件(例如 SVN)。

请随意关闭此问题,因为我提供的链接与您的问题相同,并回答了我认为您正在寻找的问题。

于 2012-04-22T19:06:32.273 回答
1

查看可用于 VBA 的各种代码清理应用程序/代码,例如:

http://www.appspro.com/Utilities/CodeCleaner.htm

除其他外,这些将模块/表单/类导出到文本文件,删除它们,然后将它们重新插入到您的项目中。

使用一些模组,这将构成您所追求的基础。

另一种可能性:我在 Excel 中做的不多,但如果其加载项的行为类似于 PowerPoint 中的加载项,那也可能会有所帮助。在 PPT 中,已安装的加载项会在 PowerPoint 启动时自动加载,创建所需的任何用户界面,并可用于应用程序中的任何打开文件。要更新代码,你修改它,创建一个新的插件,把它放在 PPT 寻找它的任何地方,然后重新启动 PPT。瞧……所有 PPT 文件的代码都已更新。

于 2012-04-22T16:02:36.990 回答
1

首先,谢谢大家的回答。我的解决方案是: 1. 将所有模块导出到 *.bas(每个模块一个文件)。2.添加模块代码我的调用:

Application.VBE.ActiveVBProject.VBComponents.Import (filename)

对于每个文件.. 3. 完成后:

Set VBComp = VBProj.VBComponents(moduleName)
If Err.Number = 0 Then 'no error
    VBProj.VBComponents.Remove VBComp

那是删除模块,因此在退出之前它不会保存在 xls 中

于 2012-04-24T08:58:36.660 回答
0

在这种情况下,我会推荐一个手动过程。

假设您要备份Module1,然后右键单击它并单击“导出文件”。您将看到一个“导出文件”对话框。将其另存为,例如Module1 - 22 Apr - 2012.bas在相关位置。你完成了

这有什么帮助?

1)文件名中的日期将告诉您备份的日期,以便您实际跟踪宏更改的日期。

2) .Bas文件可以用记事本打开。这将帮助您将当前的 VBA 代码与相关的备份文件进行比较。

3)如果您想在任何时候从特定日期检索备份,只需删除现有模块(如果需要,请对其进行备份),然后单击“导入文件”并将其导入您的 VBA。

在此处输入图像描述

高温高压

于 2012-04-22T15:51:03.710 回答