繁体   English   中英

msoLinkedOLEObjects引用哪个对象?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM