14 min read

ChatGPT 보고서 서식 고민 끝! 원클릭 자동화 만들기

ChatGPT로 보고서를 작성하면 내용은 훌륭하지만 회사 서식과 맞지 않아 추가 작업이 필요했죠. 이제 버튼 하나로 ChatGPT 보고서를 회사 표준 서식으로 자동 변환하는 방법을 알려드립니다. ChatGPT로 제작한 VBA 코드로 서식 고민을 해결하고, 업무 효율을 높여보세요.
ChatGPT 보고서 서식 고민 끝! 원클릭 자동화 만들기

이번 포스팅은 '유튜브 똑햄' 채널의 공조성 이사님 영상을 참고하여 작성했습니다.

🤔 우리가 마주한 문제

ChatGPT의 등장으로 보고서 작성이 한결 수월해졌습니다. 하지만 여기에도 작은 난관이 있었죠.

  • ChatGPT로 보고서를 생성하고 워드 파일로 저장하면 내용은 훌륭하지만...
  • 회사의 표준 서식과는 거리가 있어 추가 작업이 필요했습니다.
  • 매번 서식을 수정하는 것은 시간 낭비가 될 수 있죠.
ChatGPT에게 워드 문서 만들어달라고 하면 대체로 이런 모습

💡 해결책: 원클릭 자동 변환

이런 문제를 해결하기 위해 특별한 방법을 준비했습니다. 버튼 하나만 누르면 1초 만에 ChatGPT 보고서를 회사 표준 서식으로 자동 변환할 수 있는 방법을 소개해 드리려고 합니다.

클릭 한 번으로 우리 회사 서식에 맞춰 변경

🔍 이런 분들께 도움이 됩니다

  • ChatGPT로 보고서를 작성하시는 분
  • 회사 표준 서식 적용에 시간을 많이 쓰시는 분
  • 문서 작업 자동화에 관심이 있으신 분

⚡ 자동화가 가능한 이유

ChatGPT가 생성하는 워드 문서에는 숨겨진 장점이 있습니다.

  • 체계적인 문서 구조
    • 제목, 본문, 리스트 항목이 명확히 구분됨
    • 기본 스타일이 자동 적용되어 있음
      • 제목 클릭 시 서식과 스타일이 자동 인식

ChatGPT가 생성한 문서는 제목을 클릭할 때 서식과 스타일이 자동으로 인식되기 때문에, VBA 코드를 통해 회사 서식을 손쉽게 적용할 수 있습니다.

'2022년' 부분에 커서를 올려놓자, 스타일 항목의 '제목 3'이 활성화 되었다

🎯 이번 포스팅에서 다룰 내용

저희가 이전에 VBA를 사용해 PPT 템플릿에 콘텐츠를 자동 삽입하는 방법을 다룬 적이 있는데요. 이번에도 VBA를 활용하지만, 완전히 새로운 방식으로 접근해 보겠습니다.

포스팅과 함께 실제 따라 하실 수 있도록 샘플 보고서와 VBA 코드 파일도 함께 제공해 드립니다.

그럼 지금부터 차근차근 살펴보도록 하겠습니다! 🚀


VBA, 생각보다 어렵지 않아요!

VBA(Visual Basic for Applications)라고 하면 어렵게 느껴지시나요? 걱정하지 마세요!

VBA는 마이크로소프트 오피스 프로그램을 자동화할 수 있는 강력한 도구입니다. 복잡해 보여도 단계만 따라하시면 누구나 쉽게 사용할 수 있어요.

⚙️ VBA 환경 설정하기 (5분 완성!)

STEP 1: 개발 도구 탭 활성화

  1. Word 프로그램을 실행합니다
  2. 왼쪽 상단의 파일 메뉴 클릭
  3. 옵션리본 사용자 지정 이동
  4. 개발 도구 체크박스 선택
  5. 확인 버튼 클릭
Word 옵션 창 -> 리본 사용자 지정 -> '개발 도구' 체크 후 '확인'

STEP 2: VBA 편집기 열기

  1. 상단에 새로 생긴 개발 도구 탭 클릭
  2. Visual Basic 버튼 클릭
💡 Tip: VBA 편집기에서 "This Document"를 더블클릭하면 현재 문서에 바로 코드를 추가할 수 있습니다!
개발 도구 -> Visual Basic 클릭 -> VBA 편집기 활성

🎯 작업 전략: 성공적인 자동화를 위한 로드맵

  • 회사 서식 분석: 제목, 본문, 리스트 등 기존 보고서의 서식을 정확히 파악합니다.
  • 샘플 문서 준비: ChatGPT로 기본 문서를 생성합니다.
  • 코드 작성: 작은 기능 단위로 나누어 VBA 코드를 작성하고 테스트합니다.
  • 코드 통합: 검증된 코드를 하나의 매크로로 병합합니다.
  • 실무 적용: 실제 업무에 적용하며 필요한 부분을 보완합니다.
오늘의 작업 전략 5단계

ChatGPT 활용 시 주의사항 ⚠️_토큰 제한 고려하기

ChatGPT는 한 번의 대화에서 처리할 수 있는 텍스트 양에 제한이 있습니다. 이를 고려해 다음과 같이 접근하세요

  • 요청사항을 분할하세요
    • 복잡한 VBA 코드는 기능별로 나누어 요청
    • 한 번에 하나의 서식만 다루기
  • 단계적으로 접근하세요
    • 기본 서식부터 시작해 점진적으로 확장
    • 각 단계별로 코드 동작 확인
  • 요구사항을 명확히 전달하세요
    • 구체적인 서식 요소를 중심으로 요청
    • 필요한 기능을 명확하게 설명
💡 Tip: 코드를 받은 후에는 반드시 테스트를 거쳐 정상 작동하는지 확인하세요. 필요한 경우 ChatGPT에 수정을 요청할 수 있습니다.


회사 표준 서식으로 자동 변환하는 VBA 코드 생성

회사 보고서 서식 확인

ChatGPT로 만든 워드 문서를 우리 회사 서식으로 원클릭 변환하는 방법을 알아보겠습니다. 문서의 제목, 본문, 리스트 등 모든 요소에 회사 표준 서식을 자동으로 입힐 수 있는 VBA 코드를 준비해볼 텐데요.

먼저 문서의 각 요소별 서식을 정의하는 것부터 시작하겠습니다.

    • 제목 스타일은 레벨에 따라 글꼴 크기, 두께, 색상을 설정하고,
    • 본문 스타일에는 기본 폰트와 줄 간격을 지정합니다.
    • 리스트 스타일에서는 기호와 들여쓰기를 조정하고,
    • 필요하다면 제목 밑의 구분선 같은 특별 서식도 더해주면 됩니다.
우리 회사 보고서 서식을 확인하고, 구체적으로 정리하는 것이 필요하다

모듈 단위로 개발하고 테스트하기

VBA 코드는 관리와 수정이 쉽도록 모듈 단위로 작성하면 좋습니다. 제목 서식과 본문 서식을 별도의 하위 프로시저로 분리해두면, 나중에 특정 서식만 수정하거나 새로운 기능을 추가하기가 훨씬 수월해지니까요.

일반 텍스트 서식표 내부 서식도 각각 별도의 모듈로 개발합니다.표 안의 텍스트는 일반 본문과 다른 크기와 스타일을 가질 수 있기 때문에, 이렇게 분리해두면 서식 관리가 더욱 편리해집니다.

각 모듈이 완성되면 반드시 개별 테스트를 진행해야 합니다. 의도한 대로 서식이 적용되지 않거나 문제가 발견되면 ChatGPT의 도움을 받아 즉시 수정하고, 실제 문서에 적용해보며 서식이 정확히 변환되는지 꼼꼼히 확인합니다.

VBA 코드 작성 프롬프트 - 일반 텍스트 서식 (반드시 나눠서 요청해야 한다!)
VBA 코드 작성 프롬프트 - 표 내부 서식
VBA 코드 작성 프롬프트 - VBA 코드 종합하기

최종 코드 완성

개별 모듈의 테스트가 완료되면 하나의 통합된 매크로로 병합합니다. 이때 모듈 간 충돌이 없는지 꼼꼼히 확인하고, 한 번의 실행으로 모든 서식이 자동 적용되도록 최적화합니다.

💡 주의사항: 코드 병합 전에는 반드시 원본 파일을 백업해두세요. 예상치 못한 문제가 발생할 경우를 대비하는 것이 좋습니다.

최종 코드 예시

  • 아래 코드를 VBA 에디터에 복붙한 후, 실행해보세요!
Sub FormatText()

    ' 첫 번째 문단이 '제목1' 스타일이 아닌 경우, '제목1'로 변경
    If ActiveDocument.Paragraphs(1).Style <> ActiveDocument.Styles(wdStyleHeading1) Then
        ActiveDocument.Paragraphs(1).Style = ActiveDocument.Styles(wdStyleHeading1)
    End If
    
    ' 모든 텍스트를 나눔바른고딕 폰트로 설정하고, 텍스트 색을 검정색으로 설정, 기본 폰트 크기는 11pt로 설정
    Dim para As Paragraph
    For Each para In ActiveDocument.Paragraphs
        If para.Range.Tables.Count = 0 Then
            para.Range.Font.Name = "나눔바른고딕"
            para.Range.Font.Color = wdColorBlack ' 텍스트 색상 검정색으로 설정
            para.Range.Font.Size = 11 ' 기본 폰트 크기 11pt로 설정
        End If
    Next para

    ' '제목1' 서식의 텍스트 서식 설정: 22pt, 굵게, 구분선 추가
    Dim paraStyle As Paragraph
    For Each paraStyle In ActiveDocument.Paragraphs
        If paraStyle.Style = ActiveDocument.Styles(wdStyleHeading1) Then
            With paraStyle.Range
                .Font.Size = 22
                .Font.Bold = True
            End With

            ' 제목1 바로 밑에 검정색 구분선 삽입
            paraStyle.Range.InsertAfter vbCrLf ' 줄바꿈 추가
            paraStyle.Range.Collapse wdCollapseEnd
            paraStyle.Range.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
            paraStyle.Range.Borders(wdBorderBottom).LineWidth = wdLineWidth075pt
            paraStyle.Range.Borders(wdBorderBottom).Color = wdColorBlack
        End If
    Next paraStyle

    ' '제목2' 서식의 텍스트 서식 설정: 14pt, 굵게
    For Each paraStyle In ActiveDocument.Paragraphs
        If paraStyle.Style = ActiveDocument.Styles(wdStyleHeading2) Then
            With paraStyle.Range
                .Font.Size = 14
                .Font.Bold = True
            End With
        End If
    Next paraStyle

    ' '제목3' 서식의 텍스트 서식 설정: 12pt, 굵게
    For Each paraStyle In ActiveDocument.Paragraphs
        If paraStyle.Style = ActiveDocument.Styles(wdStyleHeading3) Then
            With paraStyle.Range
                .Font.Size = 12
                .Font.Bold = True
            End With
        End If
    Next paraStyle

    ' 불릿 포인트 서식 설정: 기본 불릿은 '□', 하위 불릿은 '-'
    Dim paraBullet As Paragraph
    For Each paraBullet In ActiveDocument.Paragraphs
        If paraBullet.Range.ListFormat.ListType = wdListBullet Then
            If paraBullet.Range.ListFormat.ListLevelNumber = 1 Then
                paraBullet.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:=ActiveDocument.ListTemplates(1), _
                    ContinuePreviousList:=False, ApplyTo:=wdListApplyToWholeList
                paraBullet.Range.ListFormat.ListTemplate.ListLevels(1).NumberFormat = ChrW(&H25A1) ' '□' 기호
                paraBullet.Range.ListFormat.ListTemplate.ListLevels(1).TextPosition = CentimetersToPoints(0.5) ' 수준 1: 들여쓰기 0.5cm (2칸)
                paraBullet.Range.ListFormat.ListTemplate.ListLevels(1).NumberPosition = 0
            ElseIf paraBullet.Range.ListFormat.ListLevelNumber = 2 Then
                paraBullet.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:=ActiveDocument.ListTemplates(1), _
                    ContinuePreviousList:=False, ApplyTo:=wdListApplyToWholeList
                paraBullet.Range.ListFormat.ListTemplate.ListLevels(2).NumberFormat = "-" ' '-' 기호
                paraBullet.Range.ListFormat.ListTemplate.ListLevels(2).TextPosition = CentimetersToPoints(1) ' 수준 2: 들여쓰기 1cm (4칸)
                paraBullet.Range.ListFormat.ListTemplate.ListLevels(2).NumberPosition = CentimetersToPoints(0.5)
            End If
        End If
    Next paraBullet

End Sub

Sub FormatTable()

    Dim tbl As Table
    Dim cell As Cell
    Dim row As Row
    Dim i As Integer
    
    ' 모든 표 순회
    For Each tbl In ActiveDocument.Tables
        
        ' 첫 번째 행 설정
        With tbl.Rows(1)
            .Shading.BackgroundPatternColor = RGB(236, 236, 236) ' 첫 번째 행 배경색 설정
            For Each cell In .Cells
                ' 폰트 및 서식 설정
                cell.Range.Font.Name = "나눔바른고딕" ' 폰트 설정
                cell.Range.Font.Bold = True ' 글자 굵게 설정
                cell.Range.Font.Size = 12 ' 글자 크기 12 설정
                
                ' 줄 간격 설정
                cell.Range.ParagraphFormat.LineSpacingRule = wdLineSpaceSingle ' 줄 간격 1.0
                
                ' 단락 앞뒤 공백 추가
                cell.Range.ParagraphFormat.SpaceBefore = 6 ' 단락 앞 공백 (6포인트)
                cell.Range.ParagraphFormat.SpaceAfter = 6 ' 단락 뒤 공백 (6포인트)
            Next cell
        End With
        
        ' 모든 셀 정렬 설정 및 나머지 셀 서식 적용
        For Each cell In tbl.Range.Cells
            ' 세로 및 가로 정렬
            cell.VerticalAlignment = wdCellAlignVerticalCenter ' 위아래 중앙 정렬
            cell.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter ' 좌우 가운데 정렬
            
            ' 폰트 설정
            cell.Range.Font.Name = "나눔바른고딕" ' 폰트 설정
            
            ' 줄 간격 설정
            cell.Range.ParagraphFormat.LineSpacingRule = wdLineSpaceSingle ' 줄 간격 1.0
            
            ' 단락 앞뒤 공백 제거 (첫 행 제외)
            If cell.RowIndex <> 1 Then
                cell.Range.ParagraphFormat.SpaceBefore = 0 ' 단락 앞 공백 제거
                cell.Range.ParagraphFormat.SpaceAfter = 0 ' 단락 뒤 공백 제거
            End If
        Next cell
        
        ' 테두리 설정
        With tbl.Borders(wdBorderTop)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth150pt ' 위쪽 테두리 굵게 (1.5pt)
        End With
        
        With tbl.Borders(wdBorderBottom)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth150pt ' 아래쪽 테두리 굵게 (1.5pt)
        End With
        
        ' 나머지 테두리 제거
        tbl.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
        tbl.Borders(wdBorderRight).LineStyle = wdLineStyleNone
        tbl.Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone
        tbl.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
        
    Next tbl
    
End Sub

Sub FormatDocument()

    ' 표 외 텍스트 서식 설정
    Call FormatText
    
    ' 표 서식 설정
    Call FormatTable

    ' 완료 메시지
    MsgBox "보고서 서식 설정이 완료되었습니다", vbInformation

End Sub


ChatGPT로 효율적인 워드 문서 만들기

ChatGPT에게 문서 작성 요청하기

앞서 제작한 VBA 코드는 대체로 잘 동작하지만, ChatGPT가 만든 모든 문서에 적용되는 것은 아닙니다. 따라서 문서 생성을 요청할 때 몇 가지 가이드를 주어야 서식이 잘 적용된 문서를 안정적으로 얻을 수 있습니다.

가장 중요한 것은 명확한 구조화입니다. ChatGPT에게 다음 세 가지를 반드시 명시해주세요

  • 문서의 기본 구조
  • 스타일 요구사항
  • 리스트 형식


업무 효율을 높이는 자동화의 시작

  • 핵심 정리
    • VBA 환경 설정부터 코드 작성, 그리고 최종 테스트까지 완료했습니다.
    • 이제 버튼 하나로 회사 문서 서식을 자동 변환할 수 있습니다.
  • 실무 적용
    • 단계적 접근이 핵심입니다
    • 서식 변환 후에는 반드시 일관성을 체크하세요

앞으로의 가능성

ChatGPT와 VBA의 결합은 다양한 업무 자동화의 시작점이 될 수 있습니다. 이 도구들을 활용해 더 스마트한 업무 환경을 만들어보세요.


AI Ground 교육이 제공하는 차별화된 학습 경험

AI Ground 교육 프로그램은 기업 실무에서 생성형 AI 기술을 효과적으로 활용할 수 있는 역량을 기르는 것을 목표로 하고 있습니다. 이론 교육과 함께 실습 위주의 체험식 학습을 강조하는 것이 교육 철학입니다.

  • 다양한 생성형 AI 도구를 직접 활용해볼 수 있는 실습 기회 제공
  • 기업에서 실제로 마주칠 수 있는 문제 상황을 가정한 프로젝트 수행
  • 유료 ChatGPT 계정 대여를 통한 데이터 처리/분석/시각화, 웹 검색, 파일 학습 등 고급 기능 활용 실습

AI 실무 적용, 어렵지 않아요!

생생한 사례와 전문가의 노하우가 가득한
AI Ground 뉴스레터에서 디지털 전환의 시대를 미리 준비하세요.
지금 바로 구독하고 AI 활용의 노하우를 만나보세요!