以某种形式使用VBA来编辑或创建将要分发的文件的更多VBA代码

时间:2018-05-23 22:02:09

标签: excel vba excel-vba

因此,虽然我尽量使标题尽可能清晰,但我会在此处进行扩展。

我正在尝试创建一个新的宏,该宏的数据将来自Pastebin,这个文件将分发给不同国家的许多人。因此我的目标是能够修改或更新一个形状或形式的宏,我可以做一个简单的测试来检查是否有更新,但无法弄清楚如何修改宏,我很乐意创建一个新的Excel工作簿暂时有这些宏或可能创建一个VBScript并创建一个宏,不知道这样做的最佳方法。

到目前为止,我已经完成了大量的搜索如何以编程方式进行moidfy宏形成网站cpearson

然而,这需要对每个将使用此文件的计算机进行安全性修改,这是不可能的。

如果您需要对问题进行更多澄清,请随时发表评论,(明天可能会回复)

有关如何修改或导入宏或变通方法以达到预期效果的任何建议都会令人惊讶。

1 个答案:

答案 0 :(得分:1)

这听起来像我几年前做的事情。 (现在它的公司财产,所以我不能重新分配它)。以下是PasteBin作为源代码的一般概念:

您可以通过创建VBA注入器并将模块名称放在Pastebin的顶部来完成此操作。

changesMadeDate|
Modulename1 updateDate1|
//your code here
|Modulename2 updateDate2|
//and so on

如果你只使用模块,用户表格和类,这是非常可行的,但远离Worksheetcode,因为那时你不能使用remove和add方法,而是必须用SendKeys重写表单代码。 (不可靠)

您需要做什么(使用模块作为示例):

  1. 创建一个包含上述所有模块的Pastebin。
  2. 创建一个分割Pastebin数据的方法,并将每个模块保存在本地,作为moduleName +" .bas"使用FSO。
  3. 删除并添加模块到当前项目。
  4. 您可以使用它来为每个模块创建updateDate,并仅更新更新的模块。只需在Pastebin中的Modulename之后添加一个updateDate。

    您可以只分发VBA注入器,每个人都可以在运行更新后使用这些模块。还要在Pastebin中的第一个模块名称之前添加changesMadeDate,您可以创建一个Workbook_open事件来检查它以了解是否要运行更新。

    如果超过了Pastebin char限制,那么只需执行:

    ModuleName1 pastebinlink1|
    ModuleName2 pastebinlink2|
    

    然后从那里开始。使用共享文本文件可能会更好。

    编辑:您也可以删除所有注射器模块。然后添加空模块并使用VBIDE.VBComponent.CodeModule然后写入它们,但我更喜欢第一种方式。