글목록

2022년 2월 7일

PowerPoint 매크로 - 사진 일괄 자르기

여러 장의 데이터 사진을 찍고 Powerpoint 슬라이드에 아래와 같이 삽입한 후, 원하는 부분만 잘라내고 싶은 경우가 있습니다. 각 사진을 Powerpoint의 '잘라내기' 기능으로 잘라내다 보면 잘라 낸 후 사진 크기가 서로 잘 안맞는 경우도 있고, 동일하게 맞추려면 시간이 오래 걸립니다.
사진 자체를 일괄적으로 잘라내는 소프트웨어를 이용해서 원본 파일을 미리 잘라낸 후 Powerpoint에 삽입하는 방법도 있습니다만, 여기에서는 별도의 작업없이 powerpoint 매크로를 이용해 일괄적으로 잘라내는 방법을 구현해보려고 합니다.


위 그림과 같이 우선 슬라이드에 여러장의 사진을 삽입해둡니다.



1번째 사진에서 원하는 위치만큼 잘라내어, 나머지 사진들도 동일하게 잘라내기 위한 기준을 만들어 줍니다. '잘라내기' 기능은 사진 1개를 더블클릭하면 오피스 버전에 따라 리본메뉴가 '서식' 또는 '그림 형식'으로 바뀌고, 맨 오른쪽에 '잘라내기' 버튼을 이용하면 됩니다.

일단 잘라낸 사진을 1번으로 선택한 후, 추가로 잘라낼 사진들을 Ctrl+마우스 클릭하거나, 드래그하여 선택해줍니다. 이 상태에서 1번 사진과 동일하게 잘라내라는 아래의 매크로를 실행하게 되면, 1번 사진과 똑같은 크기로 잘라주게 됩니다.

다음 글에서는 간혹 사진들마다 원하는 위치가 조금씩 다른 경우, 잘라낸 사진의 위치를 개별적으로 미세 조정하는 매크로를 작성하도록 하겠습니다.

'----------------------------------
Sub 그림일괄자르기()
  On Error Resume Next
  Dim tSel As ShapeRange, i As Long
  Dim tOffL As Single, tOffT As Single, tCW As Single, tCH As Single
  '선택된 개체를 ShapeRange에 할당해둡니다. ShapeRange는 그림선택시 클릭한 순서대로 1, 2, 3... 번 Shape으로 지정되며, Ctrl+A로 선택하는 경우에는 ZOrder 순서대로 지정됩니다. 따라서, 가급적 1번째 삽입된 사진 혹은 맨 아래에 있는 사진으로 잘라내기를 하는 것이 작업 중 오류를 줄일 수 있습니다.
  Set tSel = SelectedShapeRange
  '1번 사진의 잘라내기 위치를 읽어옵니다.
  With tSel(1).PictureFormat.Crop
    tCW = .ShapeWidth
    tOffL = .PictureOffsetX
    tCH = .ShapeHeight
    tOffT = .PictureOffsetY
  End With
  '2번째 사진부터는 1번 사진과 동일하게 잘라내기 정보를 넣어 줍니다. 만약 사진이 아니라면 오류가 발생하지만, 해당 개체에는 아무 작업없이 넘어가게 됩니다.
  For i = 2 To tSel.Count
    With tSel(i).PictureFormat.Crop
      .ShapeWidth = tCW
      .ShapeHeight = tCH
      .PictureOffsetX = tOffL
      .PictureOffsetY = tOffT
    End With
  Next
ErrorHandler:
End Sub

댓글 없음:

댓글 쓰기

의견이나 질문이 있으신 분은 언제든지 댓글을 달아주세요~

많이 본 글 :