0

第一部分现在正在工作[ 我有以下似乎挂起;添加/删除模块的部分在 VBA 中运行时有效0 并且也尝试了 2 但它仍然挂起(第二个参数是 UpdateLinks,可以在这里找到) ]

dim objExcel
dim objWorkbook
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(  "H:\M\X\C.xls", 0 , , ,"PASSWORD!" )

Const modpath  = "H:\M\V\"
Const modtest  = "TEST.cls"
Const modname  = "TEST"

On Error Resume Next

Dim vbcomp
Set vbcomp = ActiveWorkbook.VBProject.VBComponents(modname)
objWorkbook.VBProject.VBComponents.Remove vbcomp
objWorkbook.VBProject.VBComponents.Import modpath & modtest

objWorkbook.Save
objWorkbool.Close
set vbcomp = nothing
set objworkbook = nothing
set objExcel = nothing

再次编辑 2009 年 4 月 14 日我现在还允许“工具 - 宏 - 安全 - vbproject 访问”

脚本现在完成了,但是,当尝试打开 xls 以查看是否已进行更改时,我收到一条消息,通知我工作表已被“用于运行脚本的帐户”锁定;打开“只读”/通知

为什么它不能正确释放控制**?**

4

3 回答 3

0

首先想到:您的工作簿是否已经包含对“Microsoft Visual Basic for Applications Extensibility”库的引用(在 VBA 中)?您需要它能够与 VBProject 对象对话。实际上,如果您的代码在 VBA 中工作,您可能确实有参考。

第二个想法:ActiveWorkbook 可能没有在实际工作簿之外定义。尝试用您的 objWorkbook 对象替换它。

于 2009-04-08T18:46:36.770 回答
0

这是第三个想法。在包含模块之前,您是否尝试将应用程序的 DisplayAlerts 属性设置为 FALSE?

于 2009-04-09T15:55:14.133 回答
0

编辑后的脚本有效。

问题是因为我在工作簿级别而不是在 VBA 项目级别提供密码。

在网上快速搜索显示无论如何都不可能这样做(sendkeys等),所以在手动删除项目密码后,问题就解决了

于 2009-04-15T11:16:30.883 回答