1. '샘플50.pptx'파일을 '샘플50.ppsx' 로 저장한 다음

엑셀에서 하이퍼링크를 "샘플50.ppsx#12, 샘플50.ppsx#34" 로 하는 것이 가장 간단한 방법입니다.

2.pptx파일을 특정 페이지를 열고 싶다면 VBA를 이용해야겠습니다.

https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=335538903#reply1

 

엑셀에서 하이퍼링크를 통해 특정 PPTX의 특정 페이지로 이동하는 방...

https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=335523640&ref=me1lnk&a...

kin.naver.com

 

3. 이미 창이 열린 경우에는 해당 창을 유지한채로 열리게

https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=336026648&qb=7ZWY7J207Y2866eB7YGsIO2OmOydtOyngA==&enc=utf8§ion=kin.qna&rank=25&search_sort=0&spq=0

 

 

4. (3,4)의 경우 외부에 있는 파일로 링크하는데,

별도의 파일 없이 삽입된 pptx 개체를 열고 원하는 페이지로 이동할 수도 있습니다.

 

도형에 "10슬라이드로 이동"이라고 적고 아래 OpenUp매크로를 지정하면

클릭시 개체를 열고 편집화면에서 10슬라이드로 이동합니다. (슬라이드쇼로 열고 이동도 가능)

 

여기서는 "10슬라이드"라고 도형에 쓰인 텍스트에서 10이라는 숫자를 가져와서 10슬라이드로 이동합니다.

매크로가 걸린 도형에 텍스트, 태크, 링크 등에 이동할 슬라이드에 대한 정보를 담아놓아야 이동할 슬라이드를 알 수 있습니다.

 

Sub OpenUp()
    
    Set sht = ActiveSheet '현재 시트
    Set shp = sht.Shapes("Object 1")
    Set ppt = shp.OLEFormat.Object
    'ppt.Activate
    'DoEvents
    'ppt.Object.SlideShowWindow.View.GotoSlide 10
    
    '슬라이드쇼
    'ppt.Verb Verb:=1   '1:Show, 2:Edit, 3:Open
    'ppt.Object.SlideShowWindow.View.GotoSlide 10
    
    '편집화면
    Set bshp = sht.Shapes(Application.Caller)
    target = CLng(Split(bshp.TextFrame2.TextRange.Text, "슬라이드")(0))
    ppt.Verb Verb:=3   '1:Show, 2:Edit, 3:Open
    With ppt.Object.Windows(1)
        .Left = -5
        .Top = -5
        .Width = 1920
        .Height = 1000
        .View.GotoSlide target
    End With
End Sub

 

실제 화면:

 

 

첨부한 샘플 xlsm 파일 참고하세요.

 

 

통합 문서1.xlsm
0.16MB

 

 

 

도형에 매크로를 삽입한 경우뿐만 아니라

셀에 하이퍼링크를 건 경우까지 반영한 수정 버전입니다.

 

 

 

 

셀에 링크를 걸 때 자기자신 셀주소로 링크를 걸어야 합니다.

하이퍼링크가 눌리는 것을 감시하다가 링크가 클릭되면 (Workbook_SheetFollowHyperlink)  

하이퍼링크가 걸린 셀의 텍스트에서 10, 20, 30이라는 숫자를 가져와서 슬라이드를 이동시킵니다.

 

 

'모듈 1' 코드:

Sub OpenUp()

    Dim sht As Worksheet
    Dim pptObj As Object
    Dim Target As Long
    Dim bshp As Shape
    
    Set sht = ActiveSheet '현재 시트
    Set pptObj = sht.Shapes("Object 1").OLEFormat.Object
    
    Set bshp = sht.Shapes(Application.Caller)
    Target = CLng(Split(bshp.TextFrame2.TextRange.Text, "슬라이드")(0))
    
    OpenSlide pptObj, Target
    
End Sub

Function OpenSlide(ppt As OLEObject, TargetSlide As Long)

    '1. ppsx인 경우 쇼로 열기
    'ppt.Activate
    'DoEvents
    'ppt.Object.SlideShowWindow.View.GotoSlide 10
    
    '2. 슬라이드쇼로 열기
    'ppt.Verb Verb:=1   '1:Show, 2:Edit, 3:Open
    'ppt.Object.SlideShowWindow.View.GotoSlide 10
    
    '3. 편집화면으로 열기
    ppt.Verb Verb:=3   '1:Show, 2:Edit, 3:Open
    With ppt.Object.Windows(1)
        '.Left = -5
        '.Top = -5
        '.Width = 1000   '1920   '창크기
        '.Height = 600   '1000
        .View.GotoSlide TargetSlide
    End With
    
End Function

 

'현재 통합문서' 코드:

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
    
    Dim sht As Worksheet
    Dim pptObj As Object
    Dim TargetSld As Long

    Set sht = Sh '현재 시트
    Set pptObj = sht.Shapes("Object 1").OLEFormat.Object
    
    TargetSld = CLng(sht.Range(Target.SubAddress).Text)
    OpenSlide pptObj, TargetSld
    
End Sub

 

 

수정 파일:

 

통합 문서2.xlsm
0.16MB