Option Explicit Public Sub CreateTemplateDocument() Dim doc As Document Dim rng As Range Dim tbl1 As Table Dim tbl2 As Table Dim i As Long ' 1. 새 문서 생성 및 한글(HWP) 스타일 여백 설정 Set doc = Documents.Add With doc.PageSetup .Orientation = wdOrientPortrait .TopMargin = Application.MillimetersToPoints(35) .BottomMargin = Application.MillimetersToPoints(30) .LeftMargin = Application.MillimetersToPoints(20) .RightMargin = Application.MillimetersToPoints(20) End With ' 숨겨진 문서 전체 기본 단락 여백 0으로 초기화 (완벽한 정중앙을 위한 필수 작업) doc.Content.ParagraphFormat.SpaceBefore = 0 doc.Content.ParagraphFormat.SpaceAfter = 0 doc.Content.ParagraphFormat.LineSpacingRule = wdLineSpaceSingle ' 2. 큰 제목 (페이지 중앙, 아주 크게) Set rng = doc.Range(0, 0) rng.Text = "규율위반자 개인별 명부" & vbCrLf & vbCrLf rng.ParagraphFormat.Alignment = wdAlignParagraphCenter rng.Font.Name = "맑은 고딕" rng.Font.Size = 24 rng.Font.Bold = True rng.Collapse wdCollapseEnd ' 3. 소제목 1 (인적사항) rng.Text = "□ 인 적 사 항" & vbCrLf rng.Font.Size = 16 rng.Font.Bold = True rng.ParagraphFormat.Alignment = wdAlignParagraphCenter rng.ParagraphFormat.SpaceAfter = 12 ' ★ 표와의 간격 살짝 띄우기 (약 4mm) rng.Collapse wdCollapseEnd ' 4. 표 1 (인적사항 표 - 2행 6열) Set tbl1 = doc.Tables.Add(Range:=rng, NumRows:=2, NumColumns:=6) tbl1.Cell(1, 1).Range.Text = "번호" tbl1.Cell(1, 2).Range.Text = "성명" tbl1.Cell(1, 3).Range.Text = "죄명" tbl1.Cell(1, 4).Range.Text = "형명형기" tbl1.Cell(1, 5).Range.Text = "범수/경비급" tbl1.Cell(1, 6).Range.Text = "형기종료일" FormatTable tbl1 ' 인적사항 본문 행(2행) 높이 설정 tbl1.Rows(2).HeightRule = wdRowHeightAtLeast tbl1.Rows(2).Height = Application.MillimetersToPoints(10) ' 표 아래로 커서 이동 Set rng = doc.Range(tbl1.Range.End, tbl1.Range.End) rng.InsertParagraphAfter rng.Collapse wdCollapseEnd ' 5. 소제목 2 (규율위반사항) rng.Text = vbCrLf & "□ 규율위반사항" & vbCrLf rng.Font.Size = 16 rng.Font.Bold = True rng.ParagraphFormat.Alignment = wdAlignParagraphCenter rng.ParagraphFormat.SpaceAfter = 12 ' ★ 표와의 간격 살짝 띄우기 (약 4mm) rng.Collapse wdCollapseEnd ' 6. 표 2 (규율위반사항 표 - 10행 5열) Set tbl2 = doc.Tables.Add(Range:=rng, NumRows:=10, NumColumns:=5) tbl2.Cell(1, 1).Range.Text = "위반일시" tbl2.Cell(1, 2).Range.Text = "관규위반내용" tbl2.Cell(1, 3).Range.Text = "보고자" tbl2.Cell(1, 4).Range.Text = "확인자" tbl2.Cell(1, 5).Range.Text = "비고" FormatTable tbl2 ' 열 너비 조정 (100% 기준으로 비율 세팅) tbl2.Columns(1).PreferredWidth = Application.MillimetersToPoints(30) tbl2.Columns(2).PreferredWidth = Application.MillimetersToPoints(65) tbl2.Columns(3).PreferredWidth = Application.MillimetersToPoints(25) tbl2.Columns(4).PreferredWidth = Application.MillimetersToPoints(25) tbl2.Columns(5).PreferredWidth = Application.MillimetersToPoints(25) ' 행 높이를 1페이지 꽉 차게 고정 (절대 1페이지를 안 넘도록 안전한 높이인 14mm 적용) For i = 2 To 10 tbl2.Rows(i).HeightRule = wdRowHeightAtLeast tbl2.Rows(i).Height = Application.MillimetersToPoints(14) Next i MsgBox "정중앙 정렬과 간격이 완벽하게 적용된 1페이지 양식이 생성되었습니다." & vbCrLf & _ "이 문서를 일반 워드 파일(.docx)로 따로 저장하여 안전한 템플릿으로 사용하세요.", vbInformation, "완료" End Sub ' 표의 공통 서식(테두리, 색상, 글꼴, 완벽한 중앙 정렬 등)을 적용하는 함수 Private Sub FormatTable(ByVal tbl As Table) ' 테두리 설정 tbl.Borders.Enable = True tbl.Borders.InsideLineStyle = wdLineStyleSingle tbl.Borders.OutsideLineStyle = wdLineStyleSingle ' 표 전체 100% 너비 및 좌우 크기 자동조절 방지 tbl.PreferredWidthType = wdPreferredWidthPercent tbl.PreferredWidth = 100 tbl.AllowAutoFit = False ' ★ 완벽한 정중앙 정렬을 위한 핵심 코드 (단락 기본 여백 강제 제거) ★ With tbl.Range.ParagraphFormat .SpaceBefore = 0 ' 단락 위 여백 0 .SpaceAfter = 0 ' 단락 아래 여백 0 .LineSpacingRule = wdLineSpaceSingle ' 줄간격 1배수 고정 .Alignment = wdAlignParagraphCenter ' 가로 중앙 정렬 End With tbl.Range.Cells.VerticalAlignment = wdCellAlignVerticalCenter ' 세로 중앙 정렬 ' 글자 크기(50대 맞춤 13pt) tbl.Range.Font.Name = "맑은 고딕" tbl.Range.Font.Size = 13 tbl.Range.Font.Bold = False ' 1행(헤더) 서식: 굵게, 연두색, 머리글 반복 tbl.Rows(1).Range.Font.Bold = True tbl.Rows(1).HeadingFormat = True tbl.Rows(1).Shading.BackgroundPatternColor = RGB(204, 255, 204) End Sub