我正在PowerPoint VBA中编写一个程序,需要将数据添加到Excel工作簿(wbPool,文件路径为wbPoolPath)。
当工作簿未打开时,我的代码可以工作,但当工作簿已打开时,我在引用该工作簿时遇到问题。
Dim wbPool As Excel.Workbook
If isOpen(wbPoolPath) Then ' isOpen returns True if wbPool is already open, returns False if not
Set wbPool = GetObject(wbPoolPath) ' returns wbPool = Nothing
Else
Set wbPool = Excel.Workbooks.Open(wbPoolPath)
End If
If wbPool Is Nothing Then GoTo ErrPoolOpen
GetObject(wbPoolPath)
返回Nothing。我猜是我公司的杀毒软件阻止了GetObject
的使用。
我尝试了两种不同的方法将GetObject
替换为Set wbPool
:
'Split is used to get the workbook name from its fullname
Set wbPool = Workbooks(Split(wbPoolPath, "\")(UBound(Split(wbPoolPath, "\"))))
&
'Loops through all workbooks until it matches with wbPool
Dim wb As Excel.Workbook
For Each wb In Excel.Workbooks
If wb.FullName = wbPoolPath Then
Set wbPool = wb
Exit For
End If
Next wb
两者都返回wbPool = Nothing,而Excel.Workbooks返回“上下文无关”。
防病毒软件为Cylance Protect。
1条答案
按热度按时间a2mppw5e1#
我猜您使用的是Windows PC,下面的代码将获取给定工作簿名称的Excel示例
以上代码基于此SO post。您可以使用