如果 Excel 是打开的那么
If Excel Is Open Then
我有一个 Sub 设置了一个 Excel 实例(如下),在该 sub 我 运行 一个循环中触发另一个 sub。
Sub A
Set objExcel = CreateObject("Excel.Application")
Set objExcelWb =
objExcel.Workbooks.Open("S:\Scripting11_Settlement2_Copy.xlsm")
Set objExcelSht = objExcelWb.Worksheets("Test")
rw = 2
objExcel.Visible = True
Do While objExcel.CountA(objExcelSht.Rows(rw)) > 0
subDoWork objExcelSht.Rows(rw)
rw = rw + 1
Loop
End Sub
在下一个 Sub 中,我希望它 运行 仅当上面的 Excel 电子表格打开时。我正在使用以下内容:
Sub subDoWork(rw)
Set xlApp = GetObject(, "Excel.Application")
If xlApp.Open = True Then
'script main body
Else
subTerminateScript "Script Canceled"
End If
End Sub
不管什么原因
xlApp.Open
不起作用。有人可以帮忙吗?
例如,您可以将子调用包装到错误处理程序中。
Do While objExcel.CountA(objExcelSht.Rows(rw)) > 0
on error resume next
subDoWork objExcelSht.Rows(rw)
if err.Number <> 0 then
msgbox "an error occurred at row " & rw & vbCrLf & err.Description
exit do
end if
on error goto 0
rw = rw + 1
Loop
VBA有on error goto <label>
,vbs没有。因此请注意 on error resume next
仍会尝试执行每一行代码,并且不会在出现第一个错误时停止。
这是否合适取决于您的实际代码,例如。如果你在多张纸上工作,如果你需要在出现错误后继续循环等等
我有一个 Sub 设置了一个 Excel 实例(如下),在该 sub 我 运行 一个循环中触发另一个 sub。
Sub A
Set objExcel = CreateObject("Excel.Application")
Set objExcelWb =
objExcel.Workbooks.Open("S:\Scripting11_Settlement2_Copy.xlsm")
Set objExcelSht = objExcelWb.Worksheets("Test")
rw = 2
objExcel.Visible = True
Do While objExcel.CountA(objExcelSht.Rows(rw)) > 0
subDoWork objExcelSht.Rows(rw)
rw = rw + 1
Loop
End Sub
在下一个 Sub 中,我希望它 运行 仅当上面的 Excel 电子表格打开时。我正在使用以下内容:
Sub subDoWork(rw)
Set xlApp = GetObject(, "Excel.Application")
If xlApp.Open = True Then
'script main body
Else
subTerminateScript "Script Canceled"
End If
End Sub
不管什么原因
xlApp.Open
不起作用。有人可以帮忙吗?
例如,您可以将子调用包装到错误处理程序中。
Do While objExcel.CountA(objExcelSht.Rows(rw)) > 0
on error resume next
subDoWork objExcelSht.Rows(rw)
if err.Number <> 0 then
msgbox "an error occurred at row " & rw & vbCrLf & err.Description
exit do
end if
on error goto 0
rw = rw + 1
Loop
VBA有on error goto <label>
,vbs没有。因此请注意 on error resume next
仍会尝试执行每一行代码,并且不会在出现第一个错误时停止。
这是否合适取决于您的实际代码,例如。如果你在多张纸上工作,如果你需要在出现错误后继续循环等等