我有一段代码可以将模块和用户表单从一个工作簿转移到另一个工作簿,可以在多个系统上运行。但是,我有2个用户因错误而失败
“运行时错误'50012' - 对象'VBComponent'的方法'导出'失败”
代码如下:
Public Sub TransferModule2()
Const MODULE_NAME As String = "Module5" ' Name of the module to transfer
Const UserForm As String = "UserForm1"
Dim ID As String
ID = Environ("USERNAME")
Dim TEMPFILE As String
TEMPFILE = "C:/Users/" & ID & "/Desktop/Modul.bas" ' temp textfile
TEMPFILE2 = "UserForm.frm"
' On Error Resume Next
'**Create new workbook
'** export the module to a textfile
Workbooks(Module4.GetBook3).VBProject.VBComponents(MODULE_NAME).Export fileName:=TEMPFILE
'import the module to the new workbook
Workbooks(TemplateBook).VBProject.VBComponents.Import fileName:=TEMPFILE
Workbooks(Module4.GetBook3).VBProject.VBComponents(UserForm).Export fileName:=TEMPFILE2
Workbooks(TemplateBook).VBProject.VBComponents.Import fileName:=TEMPFILE2
'kill the textfile
Kill TEMPFILE
Kill TEMPFILE2
End Sub
第一个导出代码发生错误。我在这些计算机上启用了Visual Basic对象项目模式,它仍然失败,但在任何其他计算机上都没有问题。计算机与我的计算机完全同时拍摄,文件位于一个位置,因此没有代码修改。我们运行的完全相同的Office版本具有完全相同的更新。
可能与此导出对象语句冲突的是非参考库还是版本控制问题?
答案 0 :(得分:1)
事实证明,有问题的两个用户的登录ID与桌面所在的位置不同。我不确定为什么IT会这样做,但事实证明这是TEMPFILE路径中的位置问题。我不知道为什么我没有抓到它让我使用UserForm传输的默认路径,就好像我看得更深,我会看到这是解决方案。