2015-01-09 2 views
0

누군가가 msoLinkedOLEObjects 개체가 무엇인지 이해할 수 있습니까?msoLinkedOLEObjects는 어떤 객체를 참조합니까?

기본적으로 내 문제는 PPT 파일의 링크 원본 경로를 Excel 워크 시트에서 VBA를 통해 변경하고 싶습니다. 여기서는 PPT 파일 경로를 워크 시트에 첨부 할 수 있으며 클릭 만하면됩니다 버튼을 누르면 워크 시트에서 모든 링크 소스가 변경됩니다.

개체 유형이 포함되어 있는지 확인해야하므로 계속 실행합니다. 그러나 링크 소스가 업데이트되지 않았습니다. 디버그를 시도하고 msoLinkedOLEObjects을 찾을 수 없습니다. Excel 워크 시트에서 특정 값을 변경하면 PPT 파일의 값도 변경되므로 삽입되지 않은 방법이 궁금합니다. - PPT의 파일 경로

바르 "linkPth"여기 아래

내 코드입니다.

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 

는 (나는 결과를 위해 웹 사이트와 포럼을 검색하지만 여전히 희망이 전혀 없었다 일주일 지출했다. 이미에 대한 답변을 발생했을 경우에 죄송합니다 다시 그것을 가져왔다.)

답변

0
여기

몇 가지 문제 :

그것은하지 msoLinkedOLEObjects

OLEFormat.ProgID "Excel.Sheet.12"같은 것을 반환, 그래서 것이다 그것은거야 결코 = "Excel.Sheet" 대신, 테스트에 msoLinkedOLEObject,의 다음과 같이 "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 
+0

오타로 인해 미안하지만, 여분의 '나'를 확인하지 않고 여기에 작성했습니다. 코드를 시도했지만 여전히 작동하지 않습니다. "oshp.Type = msoLinkedOLEObject 인 경우"의 루프를 입력하지 않습니다. 그렇다면 임베디드 차트가 아닙니다. 값이 엑셀 시트를 통해 업데이트 할 수 있습니까? –

+0

삽입 된 차트와 연결된 차트는 완전히 다른 두 가지 요소입니다. 아마도 당신은 링크가 아닌 차트를 삽입했을 것입니다. oshp.Type = msoEmbeddedOLEObject인지 확인하기 위해 테스트 할 수도 있습니다. 그렇다면 차트가 포함되고 linkformat.sourcefullname 속성이 없습니다. 또한 워크 시트가 아닌 차트를보고있는 경우 .ProgID에 "Excel.Sheet"가 아닌 "Excel"이 포함되어 있는지 테스트하십시오. –

+0

메서드를 시도하고 로컬 창에서 .Type 값을 모니터링했습니다. msoAutoShape, msoChart, msoTextBox 등을 반환합니다. 그리고이 경우에는 프로그래밍 방식으로 링크 원본 경로를 변경할 수 없습니다. –

관련 문제