여기저기 분산된 사진이나 도형개체를 일정한 간격으로 자동으로 배치해주는 방법입니다.

 

VBA로 아래와 같이 개체를 원하는 가로개수 * 세로개수로 배열해줍니다.

 

실행 영상입니다.

 

사용된 코드:

더보기
'선택된 도형들을 일정하게 규칙적으로 배열합니다.
Sub ArrangeShapePosition()
    Dim usr As String, D As Integer, sDefault As String
    Dim RowCol() As String
    Dim Cols As Integer, Rows As Integer
    Dim r As Integer, c As Integer, i As Integer
    Dim BoxW As Single, BoxH As Single
    Dim SW As Single, sh As Single
    Dim sld As Slide
    Dim shp As Shape, shpN As Shape
    
    On Error Resume Next
    Set sld = ActiveWindow.Selection.SlideRange(1)
    i = ActiveWindow.Selection.ShapeRange.Count
    If i = 0 Then MsgBox "먼저 대상 도형들을 선택하세요.": Exit Sub
    On Error GoTo 0
    
    D = -Int(-Sqr(i))
    sDefault = D & ", " & -Int(-i / D)
    usr = InputBox("현재 선택된 도형들을 선택한 순서대로 슬라이드에 일정하게 배치합니다." & vbNewLine & vbNewLine & _
        "가로와 세로 칸수를 콤마(,)로 구분해서 입력하세요:" & vbNewLine & _
        "(예: 3, 2 =>가로3칸*세로2칸/ 6,4  / 4, 5 등)", "개체 자동 배치", sDefault)
    If Len(usr) = 0 Then Exit Sub
    
    RowCol = Split(usr, ",")
    
    If UBound(RowCol) <> 1 Then MsgBox "콤마로 구분된 숫자2개가 아닙니다.": Exit Sub
    If Not IsNumeric(RowCol(0)) Or Not IsNumeric(RowCol(1)) Then _
        MsgBox "숫자로 입력하세요.": Exit Sub
        
    Cols = CInt(RowCol(0)): Rows = CInt(RowCol(1))
    
    '화면 가로 세로 크기
    SW = ActivePresentation.PageSetup.SlideWidth
    sh = ActivePresentation.PageSetup.SlideHeight
    
    '박스 하나의 가로 세로 크기
    BoxW = SW / Cols
    BoxH = sh / Rows
    
    i = 0
    For Each shp In ActiveWindow.Selection.ShapeRange
     
        With shp
            
            i = i + 1
            r = Int((i - 1) / Cols) + 1
            c = (i - ((r - 1) * Cols)) Mod (Cols + 1)
            
            .Name = "Pic_" & Format(i, "00")
            .Left = (c - 1) * BoxW + (BoxW / 2 - .Width / 2)
            .Top = (r - 1) * BoxH + (BoxH / 2 - .Height / 2)
            '.TextFrame.TextRange = i
            'If r = 1 And c = 1 Then .Select msoTrue Else .Select msoFalse
        End With

    Next shp
    
End Sub

 

아래처럼 분산된 개체를 규칙적으로 배치해줍니다.

 

참고로 BrightSlide 라는 추가기능을 이용하면 위와 비슷하게 개체를 정렬시켜줄 수 있습니다.

특히 어떤 모양이 될지 Preview를 켜서 미리 볼 수 있고 간격을 바로 바로 조절해줄 수 있습니다.

BrightSlide는 무료 추가기능인데 설치 후 이메일을 등록해야 사용할 수 있습니다.

 

BrightSlide 실행 영상

 

 

샘플 pptm 파일을 첨부합니다. 다운로드 후에 항상 차단해제해주세요.

 

ArrangeShapePosition1.pptm
3.22MB