【问题标题】:separate files for VB code and ExcelVB 代码和 Excel 的单独文件
【发布时间】:2012-04-24 16:58:36
【问题描述】:

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

提前致谢!

【问题讨论】:

  • 使用宏自动将所有 VBA 代码导出到文本文件。我推荐similar question 中的this macro 关于在 Excel VBA 中使用版本控制
  • 那么导入呢?我不想为我将在代码中进行的每一次更改手动执行此操作..
  • @ItayB:看看我和 MarkJ 的 cmets 在名为 SourceTools.xla 的工具上给出的答案。
  • 首先,谢谢。我的解决方案是添加以下行:Application.VBE.ActiveVBProject.VBComponents.Import (filename)

标签: vba excel


【解决方案1】:

看看this关于 SO 的问题。

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

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

【讨论】:

【解决方案2】:

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

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

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

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

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

【讨论】:

    【解决方案3】:

    首先,谢谢大家的回答。我的解决方案是: 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 中

    【讨论】:

      【解决方案4】:

      建议在这种情况下使用手动流程。

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

      这有什么帮助?

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

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

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

      HTH

      【讨论】:

      • 这是一个很好的过程但是why not do it automatically一键点击
      • 因为我不需要 tool 本身来导出我的模块。如果我需要做一些认真的分析,那么是的,我可能会选择一个工具:) 或者除非我每天需要导出 10-15 个模块。如果只是 2-3 个模块,手动方法就可以了.
      • 感谢您的想法,但我正在寻找自动解决方案。我不是唯一的程序员,我不想因为手动处理而错过某人的更改。
      猜你喜欢
      • 2012-08-18
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      相关资源
      最近更新 更多