Excel VBA开发最佳实践

我们是一家具有开发和分发VB6编写的桌面应用程序经验的ISV 。 我们现在正在开发包含VBA代码的Excel电子表格工具。 这些可以免费下载给包括当地政府机构在内的各种用户。

之前我们很less在我们的组织之外分发电子表格。 我们应该遵循什么样的最佳实践,我们应该注意哪些缺陷?

我知道以下。

  • 使用Authenticode对电子表格进行数字签名 。 有关于此的任何意见?
  • 我担心IT部门可能会施加安全规则 ,以防止用户下载包含macros的电子表格,即使他们已经签名。 这是否发生?
  • 确保代码适用于不同版本的Excel(2000,2002,2003,2007)。 有什么build议?
  • 密码保护 (locking)电子表格。 弱保护总比没有好,如果有人得到源代码,这不是一场灾难。
  • 版本控制 。
  • …也许我应该只阅读权威书籍 ?

想到两件事情:

  • 如果由于某种原因,在单元格中有一个公式或文本,如果它大于255个字符,请尝试重构它,因为如果复制工作表,Excel没有问题将其截断。 它甚至不通知你取决于如何完成。
  • 如果使用命名范围,请避免使用三个字母命名的范围,或者三个字母后跟数字。 例如在Office 2007中,BAD1是有效的单元格引用。

我没有发展电子表格,而是创build了一个更容易分发的AddIn 。 通常我会有一个单独的菜单选项,可以创build任何你需要的function模板。 通过改变你的电子表格更“应用”意味着更多的工作,但它有几个优点;

  1. 与你的外观和感觉保持一致更容易
  2. 所有的代码,你的模板等在一个文件(即:添加)
  3. 你可以很容易地重用代码(可能是最重要的一点)

作为一个例子,看看这个示例

另一个我总是添加的技巧是一些版本控制和使用日志logging。 每个主要的函数在运行时都会触发一个web服务器并logging下来。 这不适用于所有情况,但在企业环境中,知道谁在运行什么Excel迷你应用程序以及经常使用它非常方便。

当我为各种非技术用户创build电子表格时,发现有用。 这适用于Excel 2007和更早版本(不知道它是否仍然是在更高版本中的问题),即使所有内容都受到保护,用户仍可能损坏其他工作表中的公式。

  1. 以某种方式使用命名范围,当有人改变主意时,可以轻松resize或移动它们。
  2. 当人们剪切和粘贴单元格时,使用数组公式可以修改任何依赖这些单元格的公式,如果使用数组,他们必须剪切整个数组来破坏公式
  3. 制作你的数组,使得顶部和底部的一行和左侧和右侧的一列受到保护,不能被用户改变,这样他们就不会损坏你的公式。

从来没有制定出如何确保格式不被破坏。