gpt4 book ai didi

vba - 将 VBA 过程/函数写入 .xlam 插件

转载 作者:行者123 更新时间:2023-12-02 03:17:04 28 4
gpt4 key购买 nike

我在 Excel 中创建了一个 VBA 项目,并且在所述项目中是一个将代码写入另一个模块的模块。我最终对项目进行了密码保护,以隐藏代码(没有立即意识到这会带来一些非常明显的问题)。

当用户与文件交互时,模块尝试运行代码但遇到错误(受密码保护的项目无法自行修改!嘿,我们都有自己的时刻:p)。

因此,作为解决此问题的一种方法,我想“为什么不使编辑的部分不 protected ”,同时保持文件的其余部分锁定。所以我想我会创建一个不 protected .xlam 加载项,然后将所述代码写入这部分。但是,我很难弄清楚如何做到这一点。下面是我编写的将代码写入另一个模块的代码:

Public Sub errorWrite()

Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim s As String
Dim d As String
Dim lineNumb As Long

With ThisWorkbook.VBProject.VBComponents.item("NewModule")
.CodeModule.InsertLines j, "Public sub newModule()"

j = j + 1

With ThisWorkbook.VBProject.VBComponents.item("NewModule")
.CodeModule.InsertLines j, "(my code etc..)"

j = j + 1

With ThisWorkbook.VBProject.VBComponents.item("NewModule")
.CodeModule.InsertLines j, "end sub"


end sub

例如,虽然我在 Stack 和其他地方找到了一些关于 .xlam 加载项 ( Updating an xlam add-in using VBA ) 的信息,但我宁愿让它尽可能简单。非常感谢您的建议和提示。谢谢!

最佳答案

使用不 protected 插件似乎是一种合理的方法。但是您发布的代码会写入 protected 插件中的另一个模块。您需要将另一个 AddIn 引用为 VBProject
将未 protected 插件的名称更改为唯一名称(默认为 VBAProject,并且不必是唯一的)

然后像这样创建对它的引用

Dim VBP As VBProject
Set VBP = ThisWorkbook.VBProject.VBE.VBProjects("NameOfYourUnprotectedAddin")

然后你的所有代码都使用这个引用而不是 ThisWorkbook.VBProject
例如
With VBP.VBComponents.item("NewModule")
.CodeModule.InsertLines j, "Public sub newModule()"
' etc

End With

关于vba - 将 VBA 过程/函数写入 .xlam 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36254993/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com