[英]What object does msoLinkedOLEObjects refer to?
有人可以帮助我了解什么是msoLinkedOLEObjects
对象吗?
基本上,我的问题是,我想通过VBA从excel工作表中更改PPT文件的链接源路径,在这里我可以将PPT文件路径附加到工作表中,只需单击一个按钮,它将更改工作表中的所有链接源。
我很确定对象类型是嵌入式的,所以我继续运行。 但是链接源没有更新。 我尝试调试并意识到msoLinkedOLEObjects
。 当我在excel工作表中更改某个值时,PPT文件中的值也会更改,因此我开始怀疑它是不是嵌入的?
以下是我的代码:
Var“ linkPth”-PPT的文件路径。
Set ppt = New PowerPoint.Application
ppt.Visible = True
Set oPres = ppt.Presentations.Open(linkPth)
For Each osld In oPres.Slides
For Each oshp In osld.Shapes
If oshp.Type = msoLinkedOLEObjects Then
If oshp.OLEFormat.progID = "Excel.Sheet" Then
oshp.LinkFormat.SourceFullName = ThisWorkbook.Path & "\" _
& ThisWorkbook.Name
MsgBox .LinkFormat.SourceFullName
End If
End If
Next
Next
(我花了一个星期的时间在网站和论坛上搜索结果,但是仍然毫无希望。如果已经有了答案,对不起,请再次提出。)
这里有几个问题:
它是msoLinkedOLEObject,而不是msoLinkedOLEObjects
OLEFormat.ProgID将返回类似“ Excel.Sheet.12”的内容,因此它永远不会=“ Excel.Sheet”,相反,请测试它是否包含“ Excel.Sheet”,如下所示。
最后,您可以将链接设置为指向您喜欢的任何地方,但是,如果文件不在您指定的位置,则PPT不会引发任何错误; 它只会忽略您,并保留原来的链接。
For Each osld In oPres.Slides
For Each oshp In osld.Shapes
'If oshp.Type = msoLinkedOLEObjects Then
If oshp.Type = msoLinkedOLEObject Then ' not Objects
'If oshp.OLEFormat.progID = "Excel.Sheet" Then
If InStr(oshp.OLEFormat.progID, "Excel.Sheet") > 0 Then
oshp.LinkFormat.SourceFullName = ThisWorkbook.Path & "\" _
& ThisWorkbook.Name
MsgBox .LinkFormat.SourceFullName
End If
End If
Next
Next
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.