【发布时间】:2023-03-24 14:15:01
【问题描述】:
我正在编写一个小的 VBScript 来执行以下操作:
- 检查 Excel 是否打开;如果不打开它。
- 如果 Excel 已打开,请检查特定工作簿是否已打开。
- 如果工作簿已打开,请将其激活;如果没有,请打开它。
到目前为止,我已经能够编写以下代码:
ExcelFileName = "....xlsx"
On Error Resume Next
Set xl = GetObject(, "Excel.Application")
IF Err Then
If Err.Number = 429 Then
WScript.Echo "Workbook not open (Excel is not running)."
Else
WScript.Echo Err.Description & " (0x" & Hex(Err.Number) & ")"
End If
WScript.Quit 1
End If
On Error Goto 0
Set wb = Nothing
For Each obj In xl.Workbooks
If obj.Name = ExcelFileName Then
Set wb=obj
xl.DisplayAlerts = False
wb.Save
Exit For
End If
Next
If wb Is Nothing Then
xl.Workbooks.Open("C:\...")
End If
Set xl = Nothing
Set wb = Nothing
但如果 Excel 尚未打开,它会默默地无法打开新实例。
【问题讨论】:
-
脚本尝试打开 Excel 时到底出了什么问题?
-
目前 Excel 没有启动。我正在使用
GetObject(, "Excel.Application"),这就是它试图附加到现有 Excel 实例的原因。如果没有(意味着 Excel 已关闭),我希望它打开 Excel。很抱歉,如果我没有把自己说得很清楚,这是我第一次尝试编写代码。 -
您是否收到任何错误,或者它只是保持关闭状态?
-
它只是保持关闭状态。
-
GetObject仅获取现有实例(如果有要获取的对象)。如果失败,您需要CreateObject(创建一个新实例)。这里已经有很多这样做的例子了。你找过他们吗?我在这个问题右侧的 Related 列表中找到了 example。 ====>>>>