VBA从添加到工作簿中导入udf模块
Posted
技术标签:
【中文标题】VBA从添加到工作簿中导入udf模块【英文标题】:VBA importing udf module from Add In to Workbook 【发布时间】:2016-02-27 12:10:19 【问题描述】:所以,我有一个 .xlam 插件,里面有几个 UDF。作为众所周知的absolute path problem 的解决方法,我将我的 UDF 导入到当前工作簿,以便可以从工作簿调用 UDF,而不是使用以下代码从插件调用:
Sub CopyOneModule()
Dim FName As String
On Error GoTo errhandler
With ThisWorkbook
FName = .Path & "\code.txt"
.VBProject.VBComponents("HMFunctions").Export FName
End With
ActiveWorkbook.VBProject.VBComponents.Import FName
MsgBox ("Functions successfully imported")
errhandler:
If Err.Number <> 0 Then
Select Case Err.Number
Case Is = 0:
Case Is = 1004:
MsgBox "Please allow access to Object Model and try again.", vbCritical, "No Access granted"
End Select
End If
它似乎工作正常。所以,我的(可能是愚蠢的)问题是:有没有办法使用导入的 UDF 制作工作簿“看不到”存储在 AddIn 中的相同模块?需要避免以下可能非常混乱的情况:
提前谢谢你。
【问题讨论】:
你不能卸载或禁用加载项吗?否则你可以在导入之前在 txt 文件中进行文本替换吗? 例如,加载项可以将 udf 标记为 Private,您可以在 txt 文件中将其删除 非常感谢!我在我的虚拟文本文件中做了简单的替换,现在一切都按我想要的方式工作了。 【参考方案1】:按照snoopen 的建议,从临时文本文件中删除私人标签就像一个魅力。问题关闭。这是我用于导入的最终代码:
Sub CopyOneModule()
Dim FName As String
Dim FileContent As String
Dim TextFile As Integer
Dim ws As Workbook
Set ws = ActiveWorkbook
On Error GoTo errhandler
With ThisWorkbook
FName = .Path & "\code.txt"
.VBProject.VBComponents("HMFunctions").Export FName
End With
TextFile = FreeFile
Open FName For Input As TextFile
FileContent = Input(LOF(TextFile), TextFile)
Close TextFile
FileContent = Replace(FileContent, "Private", "")
TextFile = FreeFile
Open FName For Output As TextFile
Print #TextFile, FileContent
Close TextFile
ws.VBProject.VBComponents.Import FName
MsgBox ("Functions successfully imported")
errhandler:
If Err.Number <> 0 Then
Select Case Err.Number
Case Is = 0:
Case Is = 1004:
MsgBox "Please allow access to Object Model and try again.", vbCritical, "No Access granted"
End Select
End If
End Sub
【讨论】:
以上是关于VBA从添加到工作簿中导入udf模块的主要内容,如果未能解决你的问题,请参考以下文章