단순한 폰트 변경은
홈탭 - 바꾸기 - 글꼴바꾸기에서 일괄로 폰트를 변경할 수 있습니다.
하지만 슬라이드 전체에서
한글 폰트와 영문폰트를 따로 지정하고자 한다면
한글폰트만 있는 폰트와 영문폰트가 들어 있는 폰트가 아닌이상 동시에 변경이 됩니다.
한글과 영문을 따로 폰트를 변경하고 싶을 때 이용할
또는 슬라이드 전체의 폰트를 일괄로 변경하는 매크로를 만들어 봤습니다.
- 조건1. 한글포함 전체 기본폰트는 맑은 고딕으로, 영문/숫자는 Times New Roman 으로 변경
- 조건2. 슬라이드 마스터 및 커스텀레이아웃에 들어 있는 폰트까지도 변경.
- 마스터가 여러개인 경우도 모든 마스터를 변경
- 조건3. 그룹 도형인 경우 그룹 안의 텍스트의 폰트까지도 변경.
- 조건4. 표가 있는 경우 표안의 텍스트도 폰트 변경
Option Explicit
Sub FontChange()
Dim pres As Presentation
Dim sld As Slide
Dim shp As Shape
Dim des As Design
Dim cus As CustomLayout
Set pres = ActivePresentation
'슬라이드마스터 디자인별로 순환
For Each des In pres.Designs
'슬라이드 마스터
For Each shp In des.SlideMaster.Shapes
ShapeFontChange shp
Next shp
'슬라이드마스터 안의 각 커스텀레이아웃 슬라이드마다 순환
For Each cus In des.SlideMaster.CustomLayouts
For Each shp In cus.Shapes
ShapeFontChange shp
Next shp
Next cus
Next des
'일반슬라이드 순환
For Each sld In pres.Slides
For Each shp In sld.Shapes
ShapeFontChange shp
Next shp
Next sld
End Sub
Function ShapeFontChange(oShp As Shape)
Dim cShp As Shape
Dim c As String
Dim i As Integer, j As Integer
'그룹 도형인 경우
If oShp.Type = msoGroup Then
For Each cShp In oShp.GroupItems
ShapeFontChange cShp
Next cShp
Else
'표인 경우
If oShp.Type = msoTable Then
With oShp.Table
For i = 1 To .Rows.Count
For j = 1 To .Columns.Count
With .Cell(i, j).Shape
If .HasTextFrame Then
With .TextFrame
If .HasText Then
'기본폰트
.TextRange.Font.Name = "맑은 고딕"
'한글인 경우 폰트
'.TextRange.Font.NameFarEast = "맑은 고딕"
'영문숫자인 경우 폰트
.TextRange.Font.NameAscii = "Times New Roman"
End If
End With
End If
End With
Next j
Next i
End With
' 일반도형(텍스트가 있는)인 경우
ElseIf oShp.HasTextFrame Then
With oShp.TextFrame
If .HasText Then
'기본폰트
.TextRange.Font.Name = "맑은 고딕"
'한글인 경우 폰트
'.TextRange.Font.NameFarEast = "맑은 고딕"
'영문숫자인 경우 폰트
.TextRange.Font.NameAscii = "Times New Roman"
End If
End With
End If
End If
End Function
*** 파일 받기(매크로 허용 필수):
*** 적용 방법:
PPT파일을 열고나서 Alt-F11 누르고 창이 뜨면
메뉴 삽입-모듈로 모듈을 하나 추가하고
매크로코드를 붙여넣고 F5키로 매크로 실행하세요.
*** 폰트뿐만 아니라
폰트크기, 색깔, 자간, 줄간격, 좌우/위아래정렬 등 기타 속성도 변경하는
경우는 아래 파일을 이용해주세요.
*** 일반 도형뿐만 아니라 그룹도형, 표, 스마트 아트, 차트 내의 글꼴 속성까지 변경하는 경우
*** 특정 폰트를 찾아 바꾸는 버전
*** 숫자인지 검사해서 폰트를 바꾸는 버전입니다.
숫자만 폰트를 바꿀 때 유용합니다.
Module2에서 "Times New Roman"을 원하는 글꼴로 바꾸고
Alt-F8누르고 FontChangeOnlyNumbers를 실행하세요.
*** 기호, 영어, 한글, 한자, 일본어 등 언어별로 각각 폰트를 달리하고 싶을 때 사용할 수 있는 버전입니다.
지식인 답변에 올렸는데 문자의 유니코드 영역을 검사하는 아래 코드가 핵심입니다.
VBA에서 문자열을 유니코드로 처리하는 걸로 아는데
특정 문자가 기호인지, Ascii 문자인지 영어, 한글, 한자, 일본어인지 등을 구분할 때 요긴할걸로 보입니다.
Function FontChange(ByRef tr As TextRange)
Dim c As TextRange
Dim lngC As Long
For Each c In tr.Characters
lngC = AscW(c.Text)
If lngC < 0 Then lngC = lngC + 65536 'convert to unsigned int
'Debug.Print c, Hex(lngC), lngC
Select Case lngC
'기호 &H20 To &H2F, 숫자 &H30 To &H39, 대문자 &H41 To &H5A, 소문자 &H61 To &H7A
'Case &H20 To &H2F, &H30 To &H39, &H41 To &H5A, &H61 To &H7A
Case &H0 To &H80
c.Font.Name = "Arial"
c.Font.NameAscii = "Arial"
c.Font.NameFarEast = "맑은 고딕" 'Space(빈칸)
'한글
Case &HAC00& To &HD7AF&
c.Font.NameFarEast = "맑은 고딕"
'일본어
Case &H3040 To &H30FF, &H31F0 To &H31FF, &H3200 To &H33FF
c.Font.NameFarEast = "Meiryo UI"
'Debug.Print "Japanese"
'한자: "\u2E80-\u2EFF\u3400-\u4DBF\u4E00-\u9FBF\uF900-\uFAFF\u20000-\u2A6DF\u2F800-\u2FA1F"
Case &H2E80 To &H2EFF, &H3400 To &H4DBF, &H4E00 To &H9FBF&, &HF900& To &HFAFF&
'Case &H20000 To &H2FA1F:
c.Font.NameFarEast = "맑은 고딕" '"Meiryo UI"
'Debug.Print "Hanja"
Case Else
'Debug.Print "Else"
c.Font.Name = "맑은 고딕"
'c.Font.NameAscii = "맑은 고딕"
'c.Font.NameFarEast = "맑은 고딕"
'c.Font.NameComplexScript = "맑은 고딕"
End Select
Next c
'//https://ko.wikipedia.org/wiki/유니코드_영역
End Function
*** 특정 색상의 글자만 삭제하기 (지식인 답변)
***(팁) 간혹 여러 폰트를 변경하다 보면 사용하지 않은 폰트가 글꼴 바꾸기 화면에 보이는 경우가 있습니다. 그런데 그런 폰트는 다른 폰트로 바꾸기해도 바꿔지지 않아 매우 곤란합니다. 그럴 때는 해당 텍스트박스나 도형의 폰트를 일단 Arial 로 변경하고 다시 원하는 폰트로 변경하세요. 또 어떤 경우는 텍스트의 언어ID(LanguageID)가 다른 나라로 되어 있어서 폰트가 바뀌지 않는 경우도 있습니다.
파워포인트에서 텍스트의 폰트는 기본 폰트이름과 함께 Ascii 폰트이름, 극동아시아 폰트 이름, ComplexScript 폰트이름, Symbol 폰트이름, 기타 폰트 이름 등을 적용할 수 있습니다. 한글폰트는 NameFarEast라는 항목으로 적용하는데 해당 폰트가 적용될 수 없는 경우는 반영되지 않습니다. 특히 일부 글자만 들어 있는 폰트를 다른 폰트로 변경하는 경우 특수문자에 대한 폰트가 없는 경우 새로운 폰트로 바뀌지만 내부적으로 ComplexScript 폰트같은 것이 기존 폰트 이름으로 남게 됩니다.
심지어 빈칸에 사용된 폰트가 특정 폰트인 경우도 있습니다. 그래서 사용하지 않는 폰트가 글꼴 바꾸기 목록에 뜨는 것입니다. 이 때는 말씀드렸듯이 Arial 로 일단 바꾼 뒤에 다른 한글폰트로 바꿔보세요. Arial 은 파워포인트 파일내에 반드시 필요한 '절대폰트'로 위의 ComplexScript폰트에 대한 글꼴로도 적용할 수 있습니다. Language ID가 다른 나라로 설정된 경우도 폰트가 바뀌지 않을 수 있는데 그 때는 검토 메뉴에서 교정언어를 원하는 나라의 언어로 바꾼 뒤에 폰트를 바꿔보세요. ⚠⚠⚠
'PPT+VBA' 카테고리의 다른 글
여러개의 빈줄이 있는 슬라이드 자동 추가 (0) | 2020.03.05 |
---|---|
PPT 표(Table) 서식 복사/적용 (11) | 2020.01.27 |
PPT 실시간 시계 혹은 타이머 추가 v2 (8) | 2019.12.21 |
PPT 실시간 시계 또는 타이머 추가 (26) | 2019.12.17 |
파워포인트에서 메뉴-서브메뉴 시스템 구현 (1) | 2019.09.05 |
여러 PPT안의 특정 단어 검색(도형 및 VBA 코드 포함 검색) (7) | 2019.07.07 |
각 슬라이드에 한글자씩 가득차게 분할 출력 (0) | 2019.07.02 |
슬라이드 이미지 분할 인쇄 및 저장 (2) | 2019.06.08 |
최근댓글