오른쪽 그림처럼 워드에서는 <탭>키를 누를 때마다 정해진 규칙대로 글머리 기호를 자동으로 삽입할 수 있습니다.
하지만 파워포인트에는 다단계 글머리 기호 서식스타일을 따로 지원하지 않습니다.
한번에 한 가지 글머리기호만 적용할 수 있습니다. 각 라인에 별도로 기호를 적용해야 합니다.
편한 방법은 워드에서 글머리 서식을 적용해서 텍스트를 만들어서 복사해서
파워포인트 슬라이드에 붙여넣는 방법이 가장 간편합니다.
파워포인트에서는 VBA나 오토핫키 등에 의존해야 합니다.
아래는 VBA로 현재 선택된 텍스트 상자에 미리 지정해놓은 글머리 서식을 적용하는 방법입니다.
아래 코드를 참고해서 원하는 스타일로 수정하셔야 합니다.
샘플로 두 가지 스타일입니다.
첫번째 스타일 - 숫자와 영문 스타일
두번째 스타일 - 특수문자 스타일
Alt+F11 창에 삽입 > 모듈 추가한 후 코드를 붙여넣고 창을 닫고
원하는 텍스트 상자를 선택하고 Alt+F8로 매크로 Style1, Style 2 를 실행하면 적용됩니다.
더보기
'Bullet.Style
'https://learn.microsoft.com/en-us/office/vba/api/powerpoint.ppnumberedbulletstyle
'https://www.brandwares.com/bestpractices/2017/06/xml-hacking-powerpoint-numbering-styles/
'Style 1 - Numbered
Sub myStyle1()
Dim shp As Shape
Dim pr As TextRange
For Each shp In ActiveWindow.Selection.ShapeRange
For Each pr In shp.TextFrame.TextRange.Paragraphs
With pr.ParagraphFormat
If pr.IndentLevel = 1 Then '1.
.Bullet.Type = msoBulletNumbered
.Bullet.Style = ppBulletArabicPeriod '3
ElseIf pr.IndentLevel = 2 Then 'A.
.Bullet.Type = msoBulletUnnumbered
.Bullet.Style = ppBulletAlphaUCPeriod '1
ElseIf pr.IndentLevel = 3 Then '1)
.Bullet.Type = msoBulletNumbered
.Bullet.Style = ppBulletArabicParenRight '2
ElseIf pr.IndentLevel = 4 Then 'A)
.Bullet.Type = msoBulletUnnumbered
.Bullet.Style = msoBulletAlphaUCParenRight '11
ElseIf pr.IndentLevel = 5 Then '(1)
.Bullet.Type = msoBulletNumbered
.Bullet.Style = msoBulletArabicParenBoth '12
ElseIf pr.IndentLevel = 6 Then '(a)
.Bullet.Type = msoBulletUnnumbered
.Bullet.Style = msoBulletAlphaLCParenBoth '8
ElseIf pr.IndentLevel = 7 Then '①
.Bullet.Type = msoBulletNumbered
.Bullet.Style = ppBulletCircleNumDBPlain '18
ElseIf pr.IndentLevel = 8 Then 'ⓐ
.Bullet.Type = msoBulletUnnumbered
.Bullet.Style = msoBulletAlphaUCParenBoth '10
ElseIf pr.IndentLevel >= 9 Then '
.Bullet.Type = msoBulletUnnumbered
'level limit
End If
End With
Next pr
Next shp
End Sub
'Style2 - Character style
Sub myStyle2()
Dim shp As Shape
Dim pr As TextRange
For Each shp In ActiveWindow.Selection.ShapeRange
For Each pr In shp.TextFrame.TextRange.Paragraphs
With pr.ParagraphFormat
If pr.IndentLevel = 1 Then ' small dot
.Bullet.Type = msoBulletUnnumbered
.Bullet.Font.Name = "Arial"
.Bullet.Character = 8226
ElseIf pr.IndentLevel = 2 Then 'diamond
.Bullet.Type = msoBulletUnnumbered
.Bullet.Font.Name = "Wingdings"
.Bullet.Character = 117
ElseIf pr.IndentLevel = 3 Then 'small square
.Bullet.Type = msoBulletUnnumbered
.Bullet.Font.Name = "Wingdings"
.Bullet.Character = 167
ElseIf pr.IndentLevel = 4 Then 'small circle
.Bullet.Type = msoBulletUnnumbered
.Bullet.Font.Name = "Wingdings"
.Bullet.Character = 108
ElseIf pr.IndentLevel = 5 Then 'boomerang
.Bullet.Type = msoBulletUnnumbered
.Bullet.Font.Name = "Wingdings"
.Bullet.Character = 216
ElseIf pr.IndentLevel = 6 Then 'check
.Bullet.Type = msoBulletUnnumbered
.Bullet.Font.Name = "Wingdings"
.Bullet.Character = 252
ElseIf pr.IndentLevel = 7 Then 'check in square
.Bullet.Type = msoBulletUnnumbered
.Bullet.Font.Name = "Wingdings"
.Bullet.Character = 254
ElseIf pr.IndentLevel = 8 Then 'right arrow
.Bullet.Type = msoBulletUnnumbered
.Bullet.Font.Name = "Wingdings"
.Bullet.Character = 61672
ElseIf pr.IndentLevel >= 9 Then '
.Bullet.Type = msoBulletUnnumbered
'level limit
End If
End With
Next pr
Next shp
End Sub
'탭키에 반응할 경우
Sub Ttab()
Dim sld As Slide
Dim shp As Shape
Dim tr As TextRange2
Set tr = ActiveWindow.Selection.TextRange2
With tr.ParagraphFormat
'처음 탭키를 친 경우 글머리 번호 적용
If .IndentLevel = 1 Then '1.
If .Bullet.Type = msoBulletNone Then
.Bullet.Type = msoBulletNumbered
.Bullet.Style = ppBulletArabicPeriod '3
Exit Sub
End If
'최대 9레벨
ElseIf .IndentLevel >= 9 Then
Exit Sub
End If
'단계를 증가
.IndentLevel = .IndentLevel + 1
Debug.Print .IndentLevel
If .IndentLevel = 2 Then 'A.
.Bullet.Type = msoBulletUnnumbered
.Bullet.Style = ppBulletAlphaUCPeriod '1
ElseIf .IndentLevel = 3 Then '1)
.Bullet.Type = msoBulletNumbered
.Bullet.Style = ppBulletArabicParenRight '2
ElseIf .IndentLevel = 4 Then 'A)
.Bullet.Type = msoBulletUnnumbered
.Bullet.Style = msoBulletAlphaUCParenRight '11
ElseIf .IndentLevel = 5 Then '(1)
.Bullet.Type = msoBulletNumbered
.Bullet.Style = msoBulletArabicParenBoth '12
ElseIf .IndentLevel = 6 Then '(a)
.Bullet.Type = msoBulletUnnumbered
.Bullet.Style = msoBulletAlphaLCParenBoth '8
ElseIf .IndentLevel = 7 Then '①
.Bullet.Type = msoBulletNumbered
.Bullet.Style = ppBulletCircleNumDBPlain '18
ElseIf .IndentLevel = 8 Then 'ⓐ
.Bullet.Type = msoBulletUnnumbered
.Bullet.Style = msoBulletAlphaUCParenBoth '10
ElseIf .IndentLevel >= 9 Then '
.Bullet.Type = msoBulletUnnumbered
'level limit
End If
End With
End Sub
그리고 내어쓰기와 들여쓰기 간격은 아래 답변의 코드를 참고하세요.
https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102020103&docId=433830813
주요 코드 발췌:
더보기
'현재 첫번째 단락만 적용
Set para = .TextRange2.Paragraphs(1)
'ind = 선택텍스트 x좌표 - 도형x좌표 - 도형내 왼쪽 여백
ind = para.BoundLeft - .ShapeRange(1).Left - .ShapeRange(1).TextFrame.MarginLeft
'단락전체 들여쓰기
para.ParagraphFormat.LeftIndent = ind
'첫번째줄 들여쓰기(음수이면 내어쓰기)
para.ParagraphFormat.FirstLineIndent = -ind
샘플 파일 첨부합니다.
관련: 지식인
'PPT+VBA' 카테고리의 다른 글
실시간 D-Day 표시하기 (0) | 2024.07.03 |
---|---|
여러 슬라이드 보기용 슬라이드 목차 마스크 삽입하기 (0) | 2024.06.27 |
모든 슬라이드의 도형의 위치를 일치시키기 (0) | 2024.06.26 |
[엑셀연동]엑셀 데이터로 차트를 만들어 성적표 일괄 만들기 (0) | 2024.06.26 |
모핑전환 사진앨범 만들기 (1) | 2024.06.03 |
둥근 네모의 둥근 정도를 도형이 크기와 상관 없이 유지하는 방법 (0) | 2024.06.02 |
슬라이드 노트가 있는 슬라이드만 출력하기 (0) | 2024.05.28 |
사진을 여러 칸(박스)로 자동으로 분할하기 (0) | 2024.05.18 |
최근댓글