파워포인트질을 하다 보니 애니메이션 비스무레한 걸 구현해야 하는 상황이 생겼다. 움직이는 gif나 동영상 파일로 만들자니 화질이 마음에 안 들어서 고민을 하다가 그림 파일 수가 아주 많지는 않아서 그림 파일 수만큼 슬라이드를 만들고 슬라이드마다 같은 위치에 같은 크기로 이미지를 집어넣기로 했다.
이런 작업을 할 때 파워포인트의 슬라이드쇼 추가 기능은 그다지 도움이 안 된다. 생각보다 선택의 폭이 좁은 편이라서 위치나 사이즈 등을 원하는대로 일괄조절하기가 어렵기 때문이다.
그림이 열댓장이면 그냥 일일이 하나씩 집어넣고 그림 크기랑 위치 조정하면 되겠지만, 그렇게까지 그림이 적은 건 아니라서 완전 수동으로는 작업할 수 없는 상황. 결국 매크로를 짜서 돌리기로 했다.
일단 파워포인트에서 매크로 쓰려면 개발 도구 탭을 활성화시켜야 하는데, 이미 그렇게 되어 있지 않다면 다음과 같이 하면 된다. (적어도 내가 일터에서 쓰는 파워포인트 2010 기준으로는 이렇다)
- 파일 - 옵션 - 리본 사용자 지정 누른 다음 왼쪽 맨 위의 “다음에서 명령 선택” 드롭다운 메뉴에서 “많이 사용하는 명령” 선택.
- 오른쪽 위의 “리본 메뉴 사용자 지정” 드롭다운 메뉴에서 “기본 탭” 선택
- “개발 도구” 왼쪽의 네모 클릭해서 선택된 것으로 설정
' 여러 파일을 가져와서 전부 같은 사이즈로 리사이즈한 다음 새 슬라이드의 동일한 위치에 배치하는 매크로.
' 삽입할 이미지를 제외한 나머지 이미지는 전부 슬라이드 마스터에 집어넣었으며, 1 페이지에 첫 번째 집어
' 넣을 파일을 수동으로 배치하여 위치를 파악한다.
' 이 경우에는 높이는 6.96 cm, 너비는 12.6 cm, 그림 왼쪽 상단은 왼쪽에서 12.43 cm, 위에서 7.33 cm 위치에
' 들어가도록 맞추고 있다.
Sub insert_images()
Dim file_name_stub As String
file_name_stub = "D:\"
Dim file_name As String
Dim i As Integer
Dim pptSlide As Slide
Dim pptLayout As CustomLayout
Dim oPic As Shape
Set pptLayout = ActivePresentation.Slides(1).CustomLayout
For i = 2 To 81
Set pptSlide = ActivePresentation.Slides.AddSlide(i, pptLayout)
file_name = file_name_stub & "tt_" & Format(i, "00") & ".png"
Set oPic = ActivePresentation.Slides(i).Shapes.AddPicture(file_name, False, True, cm2Points(12.43), cm2Points(7.33), cm2Points(12.6), cm2Points(6.96))
Next i
End Sub
Function cm2Points(inVal As Single)
cm2Points = inVal * 28.346 'VBA에서는 픽셀 단위를 씀. 72 ppi 기준으로 1 cm는
'1/2.54 inch이므로 72 / 2.54 = 28.346을 곱하면 됨
End Function