단순한 폰트 변경은

홈탭 - 바꾸기 - 글꼴바꾸기에서 일괄로 폰트를 변경할 수 있습니다.

 

하지만 슬라이드 전체에서

한글 폰트와 영문폰트를 따로 지정하고자 한다면 

한글폰트만 있는 폰트와 영문폰트가 들어 있는 폰트가 아닌이상 동시에 변경이 됩니다.

한글과 영문을 따로 폰트를 변경하고 싶을 때 이용할

또는 슬라이드 전체의 폰트를 일괄로 변경하는 매크로를 만들어 봤습니다.

 

  • 조건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

 

*** 파일 받기(매크로 허용 필수):

폰트한글영문바꾸기2.pptm
0.05MB

*** 적용 방법:

PPT파일을 열고나서 Alt-F11 누르고 창이 뜨면

메뉴 삽입-모듈로 모듈을 하나 추가하고
매크로코드를 붙여넣고 F5키로 매크로 실행하세요.

 

*** 폰트뿐만 아니라

폰트크기, 색깔, 자간, 줄간격, 좌우/위아래정렬 등 기타 속성도 변경하는 

경우는 아래 파일을 이용해주세요.

폰트등일괄변경1.pptm
0.05MB

*** 일반 도형뿐만 아니라 그룹도형, 표, 스마트 아트, 차트 내의 글꼴 속성까지 변경하는 경우

폰트등일괄변경2.pptm
0.08MB

 

*** 특정 폰트를 찾아 바꾸는 버전

폰트등일괄변경1-1.pptm
0.05MB

 

 

*** 숫자인지 검사해서 폰트를 바꾸는 버전입니다.

숫자만 폰트를 바꿀 때 유용합니다.

Module2에서 "Times New Roman"을 원하는 글꼴로 바꾸고

Alt-F8누르고 FontChangeOnlyNumbers를 실행하세요.

폰트한글영문바꾸기2OnlyNumbers.pptm
0.05MB

*** 기호, 영어, 한글, 한자, 일본어 등 언어별로 각각 폰트를 달리하고 싶을 때 사용할 수 있는 버전입니다.

지식인 답변에 올렸는데 문자의 유니코드 영역을 검사하는 아래 코드가 핵심입니다. 

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

폰트한글영어일본어바꾸기3.pptm
0.06MB

 

*** 특정 색상의 글자만 삭제하기 (지식인 답변)

특정색깔문자만추출삭제1.pptm
0.06MB

 

***(팁) 간혹 여러 폰트를 변경하다 보면 사용하지 않은 폰트가 글꼴 바꾸기 화면에 보이는 경우가 있습니다. 그런데 그런 폰트는 다른 폰트로 바꾸기해도 바꿔지지 않아 매우 곤란합니다. 그럴 때는 해당 텍스트박스나 도형의 폰트를 일단 Arial 로 변경하고 다시 원하는 폰트로 변경하세요. 또 어떤 경우는 텍스트의 언어ID(LanguageID)가 다른 나라로 되어 있어서 폰트가 바뀌지 않는 경우도 있습니다.

 

파워포인트에서 텍스트의 폰트는 기본 폰트이름과 함께 Ascii 폰트이름, 극동아시아 폰트 이름, ComplexScript 폰트이름, Symbol 폰트이름, 기타 폰트 이름 등을 적용할 수 있습니다.  한글폰트는 NameFarEast라는 항목으로 적용하는데 해당 폰트가 적용될 수 없는 경우는 반영되지 않습니다. 특히 일부 글자만 들어 있는 폰트를 다른 폰트로 변경하는 경우 특수문자에 대한 폰트가 없는 경우 새로운 폰트로 바뀌지만 내부적으로 ComplexScript 폰트같은 것이 기존 폰트 이름으로 남게 됩니다.

 

심지어 빈칸에 사용된 폰트가 특정 폰트인 경우도 있습니다. 그래서 사용하지 않는 폰트가 글꼴 바꾸기 목록에 뜨는 것입니다. 이 때는 말씀드렸듯이 Arial 로 일단 바꾼 뒤에 다른 한글폰트로 바꿔보세요.  Arial 은 파워포인트 파일내에 반드시 필요한 '절대폰트'로 위의 ComplexScript폰트에 대한 글꼴로도 적용할 수 있습니다. Language ID가 다른 나라로 설정된 경우도 폰트가 바뀌지 않을 수 있는데 그 때는 검토 메뉴에서 교정언어를 원하는 나라의 언어로 바꾼 뒤에 폰트를 바꿔보세요. ⚠⚠⚠