这是子
Sub test()
With ThisWorkbook
.Worksheets("Sheet1").Range("A1").Value = 5
.Save
End With
End Sub
这是启动sub
的vbscriptDim ObjExcel, ObjWB
Set ObjExcel = CreateObject("excel.application")
Set ObjWB = ObjExcel.Workbooks.Open("C:\Users\Owner\Desktop\Book1.xlsm")
ObjExcel.Visible = True
ObjExcel.Run "Book1.xlsm!test"
ObjWB.Close False
Set ObjExcel = Nothing ' Should I use ObjExcel.Quit instead ?
'if i use both I get the error
我收到以下vbscript运行时错误
答案 0 :(得分:3)
我出去了,因为您发布的代码显然不引发错误(至少根据代码中的注释),但很可能是您使用过的ObjExcel.Quit
和Set ObjExcel = Nothing
的顺序错误。如果您在调用ObjExcel
之前将Nothing
设置为ObjExcel.Quit
,则变量不再包含具有Quit
方法的对象,从而引发您观察到的错误。
如果要终止Excel,则必须使用ObjExcel.Quit
。没有它,即使脚本终止,程序也会继续运行。但是,您必须在将变量设置为Nothing
之前调用该方法(这是可选的),因此请更改此项:
Set ObjExcel = Nothing
要么:
ObjExcel.Quit
Set ObjExcel = Nothing
或者这个:
ObjExcel.Quit
答案 1 :(得分:0)
我发现如果我还没有将打开的工作簿设置为Nothing,我最终得到了我的电子表格的临时副本,导致它被锁定。它还使Excel任务在任务管理器中运行和可查看。 因此,完成我使用的电子表格后:
public void updateOnLinearView(ViewGroup parentView) {
// Note reusing child views if there are any
for (int pos = 0; pos < getCount(); pos++) {
View existingView = parentView.getChildAt(pos);
if (existingView != null) getView(pos, existingView, parentView);
else parentView.addView(getView(pos, null, parentView));
}
while (parentView.getChildCount() > getCount())
parentView.removeViewAt(getCount());
}