관련: 지식인

 

 

일단, 현재 파워포인트는 매크로 녹화를 지원하지 않습니다.

2003버전에 있었지만 그 기능이 매우 미약했고 그 이후로는 지원하지 않습니다.

다만 엑셀에서 매크로를 녹화해서

녹화한 코드를 참고해서 파워포인트에 응용할 수 있습니다.

 

 

 

하지만 이 경우에는 도형에 클립보드 이미지를 넣는 것을 녹화해도

질감으로만 붙여넣어집니다.

파워포인트만의 VBA를 이용해야겠습니다.

그런데 파워포인트 VBA에서는 클립보드 이미지를 곧바로 도형에 채워넣는 기능을 지원하지 않습니다.

1. 클립보드 이미지를 슬라이드에 붙여넣고 현재 도형위에 겹치는 방법을 써야 합니다.

2. 아니면 붙여넣은 이미지를 저장한 다음에 shape.Fill.UserPicture 를 이용해서 이미지 파일을 도형에 채워넣을 수는 있습니다.

1번 방법입니다.

Option Explicit

'// 현재 도형 위에 클립보드 그림 붙여넣기
Sub macro1()

    Dim sld As Slide
    Dim shp As Shape, pic As Shape
    
    '현재 선택된 도형
    On Error Resume Next
    Set shp = ActiveWindow.Selection.ShapeRange(1)
    On Error GoTo 0
    If shp Is Nothing Then MsgBox "도형을 선택하세요.": Exit Sub
    
    Set sld = shp.Parent
    'Application.CommandBars.ExecuteMso "PasteAsPicture"
    'Set pic = sld.Shapes(sld.Shapes.Count)
    
    'EMF형식으로 붙여넣기
    Set pic = sld.Shapes.PasteSpecial(ppPasteMetafilePicture)(1)
    DoEvents
    
    '그림 크기와 위치 조정
    With pic
        .LockAspectRatio = msoFalse
        .Width = shp.Width
        .Height = shp.Height
        .Left = shp.Left
        .Top = shp.Top
        .Name = "Pic_" & shp.Name
    End With
    
End Sub

 

파일을 저장할 필요가 없는 것이 장점이고

기존 도형의 링크 등의 속성을 유지 못하는 단점이 있습니다.

2번 방법입니다.

 

'// 클립보드 그림을 파일로 저장한 뒤에 현재 도형에 채우기
Sub macro2()

    Dim sld As Slide
    Dim shp As Shape, pic As Shape
    Dim fname As String
    
    '현재 선택된 도형
    On Error Resume Next
    Set shp = ActiveWindow.Selection.ShapeRange(1)
    On Error GoTo 0
    If shp Is Nothing Then MsgBox "도형을 선택하세요.": Exit Sub
    
    '클립보드 현재슬라이드에 붙여넣기
    Set sld = shp.Parent
    Set pic = sld.Shapes.PasteSpecial(ppPasteMetafilePicture)(1)
    DoEvents
    
    '붙여넣은 이미지를 파일로 저장하기(emf)
    fname = ActivePresentation.Path & "\" & shp.Name & ".emf"
    pic.Export fname, ppShapeFormatEMF
    DoEvents
    
    '현재 도형에 채워넣기
    shp.Fill.UserPicture fname
    pic.Delete '임시 이미지 삭제
    Kill fname
    
End Sub

 

파일을 저장하는 것이 단점이고

기존 도형의 속성을 모두 유지하는 것이 장점입니다.

FillShapeWithPicture1.pptm
1.00MB

 

3. 추가로 AutoHotkey를 이용해서 일련의 단축키로 현재 과정을 처리하는 다른 좀 더 '간단한' 방법도 있습니다.

제가 예전에 오피스 단축키를 원하는 대로 적용하는 오토핫키 프로그램을 만들어 둔 것이 있습니다.

여기서 이걸 이용해볼 수 있습니다.

단축키를 이용한다면 도형을 선택하고 나서

Alt + JD +SF + T + M + P +C 를 차례로 눌러주면 원하는 대로

클립보드이미지를 현재 도형을 채워넣습니다.

이 과정을 오토핫키로 처리하는 것입니다. 첨부파일을 이용하세요.

exe파일을 실행해 놓고 도형을 선택하고 F3 키나 Win+a를 눌러주면 됩니다. 종료는 Win+x입니다.

 

OfficeKey1_!jdsftmpc_F3.exe
0.80MB

 

파일명이 이상하지만 파일명을 변경해서 단축키를 사용자가 마음대로 조절할 수 있게 만들었습니다.

 


 

 

그리고 현재 선택된 도형이 아니라 현재 선택된 그림을 클립보드에 복사한 그림으로 바꾸는 방법은 아래 링크를 참고하세요.특히 원본 그림의 크기와 동일하게 변경시켜 줍니다. 

 

1. Autohotkey를 이용한 방법 

https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102020103&docId=430207612#answer1 

 

파워포인트 : 그림을 클립보드 그림으로 변경(빠른 실행 도구)

파워포인트 빠른 실행도구에서 단축키로 "그림을 클립보드 그림으로 변경" 기능을 잘 활용하고 있었어요. 기존의 A 그림을 클릭하고 단축키를 눌러주면 클립보드에 저장되어있던 B그림으로...

kin.naver.com

2. VBA를 이용한 방법

https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102020103&docId=414682844#answer1 

 

파워포인트-'그림바꾸기'를 하면 클립보드 그림 크기대로 붙여넣기 되는...

파워포인트-'그림바꾸기'를 이용해서 클립보드 그림을 넣으려고 하려고 합니다 그런데1. 변경하고 싶은 사진을 캡쳐프로그램으로 캡쳐2. ppt 슬라이드에서 기존 그림을 클릭하고3. '...

kin.naver.com