从VBS打开或激活Excel中的工作簿
我正在编写一个小VBScript来执行以下操作:从VBS打开或激活Excel中的工作簿,excel,vbscript,com,Excel,Vbscript,Com,我正在编写一个小VBScript来执行以下操作: 检查Excel是否打开;如果没有打开它 如果Excel已打开,请检查特定工作簿是否已打开 如果工作簿已打开,请将其激活;如果没有,打开它 到目前为止,我已经能够编写以下代码: ExcelFileName = "....xlsx" On Error Resume Next Set xl = GetObject(, "Excel.Application") IF Err Then If Err.Number = 429 Then W
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尚未打开,它将以静默方式无法打开新实例。GetObject的正常行为是为您提供一个正在运行的Excel实例或导致错误。如果出现错误(Excel未运行),请使用CreateObject创建一个新的Excel实例。GetObject通常会为您提供一个正在运行的Excel实例或导致错误。如果出现错误(Excel未运行),请使用CreateObject创建一个新的Excel实例。GetObject通常会为您提供一个正在运行的Excel实例或导致错误。如果出现错误(Excel未运行),请使用CreateObject创建一个新的Excel实例。GetObject通常会为您提供一个正在运行的Excel实例或导致错误。如果出现错误(Excel未运行),请使用CreateObject创建新的Excel实例。使用GetObject打开文件
set wb = GetObject("c:\folder\excel.xls")
COM将确定需要做什么。这一行就是您的三个需求所需的全部
这就是VB在使用带有文件名的GetObject时要求COM做的事情
bindMonike
通过对象的名字对象定位对象,如果对象处于非活动状态,则激活该对象,并检索指向该对象上指定接口的指针
HRESULT BindMoniker(
LPMONIKER pmk,
德沃德·格福普特,
refid iidResult,
LPVOID FAR*ppvResult
);
使用GetObject打开文件
set wb = GetObject("c:\folder\excel.xls")
COM将确定需要做什么。这一行就是您的三个需求所需的全部
这就是VB在使用带有文件名的GetObject时要求COM做的事情
bindMonike
通过对象的名字对象定位对象,如果对象处于非活动状态,则激活该对象,并检索指向该对象上指定接口的指针
HRESULT BindMoniker(
LPMONIKER pmk,
德沃德·格福普特,
refid iidResult,
LPVOID FAR*ppvResult
);
使用GetObject打开文件
set wb = GetObject("c:\folder\excel.xls")
COM将确定需要做什么。这一行就是您的三个需求所需的全部
这就是VB在使用带有文件名的GetObject时要求COM做的事情
bindMonike
通过对象的名字对象定位对象,如果对象处于非活动状态,则激活该对象,并检索指向该对象上指定接口的指针
HRESULT BindMoniker(
LPMONIKER pmk,
德沃德·格福普特,
refid iidResult,
LPVOID FAR*ppvResult
);
使用GetObject打开文件
set wb = GetObject("c:\folder\excel.xls")
COM将确定需要做什么。这一行就是您的三个需求所需的全部
这就是VB在使用带有文件名的GetObject时要求COM做的事情
bindMonike
通过对象的名字对象定位对象,如果对象处于非活动状态,则激活该对象,并检索指向该对象上指定接口的指针
HRESULT BindMoniker(
LPMONIKER pmk,
德沃德·格福普特,
refid iidResult,
LPVOID FAR*ppvResult
);
脚本试图打开Excel时到底出了什么问题?此时Excel没有启动。我使用的是
GetObject(,“Excel.Application”)
,这就是它试图附加到现有Excel实例的原因。如果没有(表示Excel已关闭),我希望它打开Excel。很抱歉,如果我没有说清楚,这是我第一次尝试编写代码。您是否收到任何错误,或者它只是保持关闭?它只是保持关闭。GetObject
仅获取现有实例(如果要获取对象)。如果失败,您需要CreateObject
(创建一个新实例)。这里已经有很多这样做的例子了。你找到他们了吗?我在这个问题右边的相关列表中找到了一个脚本试图打开Excel时到底出了什么问题?此时Excel没有启动。我使用的是GetObject(,“Excel.Application”)
,这就是它试图附加到现有Excel实例的原因。如果没有(表示Excel已关闭),我希望它打开Excel。很抱歉,如果我没有说清楚,这是我第一次尝试编写代码。您是否收到任何错误,或者它只是保持关闭?它只是保持关闭。GetObject
仅获取现有实例(如果要获取对象)。如果失败,您需要CreateObject
(创建一个新实例)。这里已经有很多这样做的例子了。你找到他们了吗?我在这个问题右边的相关列表中找到了一个脚本试图打开Excel时到底出了什么问题?此时Excel没有启动。我使用的是GetObject(,“Excel.Application”)
,这就是它试图附加到现有Excel实例的原因。如果没有(表示Excel已关闭),我希望它打开Excel。很抱歉,如果我没有说清楚,这是我第一次尝试编写代码。您是否收到任何错误,或者它只是保持关闭?它只是保持关闭。GetObject
仅获取现有实例(如果要获取对象)。如果失败,您需要CreateObject
(创建一个新实例)。这里已经有很多这样做的例子了。你找到他们了吗?我在这个问题右边的相关列表中找到了一个脚本试图打开Excel时到底出了什么问题?此时Excel没有启动。我正在使用GetObject(,“Excel.Application”)
,这就是它试图附加到exi的原因