VBA를 사용하여 여러 Excel 표를 단일 Word 문서로 결합

VBA를 사용하여 여러 Excel 표를 단일 Word 문서로 결합
VBA를 사용하여 여러 Excel 표를 단일 Word 문서로 결합

Excel 데이터를 Word에 효율적으로 병합

다양한 플랫폼에서 데이터를 관리하는 것은 번거로운 작업이 될 수 있으며, 특히 Excel의 여러 테이블을 Word 문서로 컴파일해야 하는 경우 더욱 그렇습니다. VBA를 사용하면 이 프로세스를 자동화하여 원하는 형식과 구조를 유지하면서 데이터를 원활하게 전송할 수 있습니다.

이 문서에서는 현재 Excel 테이블에서 세 개의 별도 Word 문서를 생성하는 VBA 매크로를 살펴봅니다. 명확성과 구성을 위해 각 테이블 뒤에 페이지 나누기를 포함하여 단일 Word 문서에 모든 테이블을 생성하도록 코드를 수정하는 방법을 보여줍니다.

명령 설명
Set wdApp = New Word.Application Word 응용 프로그램의 새 인스턴스를 초기화합니다.
wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak 문서 끝에 페이지 나누기를 삽입합니다.
.Rows(1).HeadingFormat = True 테이블의 첫 번째 행이 머리글 행이 되도록 지정합니다.
.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) 지정된 행과 열이 있는 Word 문서에 새 테이블을 추가합니다.
With wdTbl.Borders 표 내부 및 외부 선의 테두리 스타일을 설정합니다.
wdApp.Visible = True 사용자에게 Word 응용 프로그램이 표시되도록 합니다.
If (r - startRow + 2) >If (r - startRow + 2) > .Rows.Count Then .Rows.Add 현재 행이 기존 행 수를 초과하는 경우 테이블에 새 행을 추가합니다.
Set wdDoc = .Documents.Add Word 응용 프로그램에서 새 문서를 만듭니다.

테이블 결합을 위한 VBA 매크로 이해

제공된 스크립트는 VBA를 사용하여 여러 Excel 테이블의 데이터를 단일 Word 문서로 전송하는 프로세스를 자동화하는 방법을 보여줍니다. 주요 스크립트, Sub ConsolidateTablesInOneDocument(), 다음을 사용하여 Word 응용 프로그램의 새 인스턴스를 초기화합니다. Set wdApp = New Word.Application 다음을 사용하여 새 문서를 만듭니다. Set wdDoc = .Documents.Add. 빈 셀을 확인하여 테이블이 끝나는 Excel의 행을 식별하고 이러한 위치를 변수에 저장합니다. 그리고 Second. 이를 통해 스크립트는 각 테이블이 어디서 끝나고 시작하는지 알 수 있습니다. 그런 다음 매크로는 다음을 사용하여 Word에 테이블을 만듭니다. .Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) 그리고 이 테이블을 Excel의 데이터로 채웁니다.

각 테이블이 명확하게 구분되도록 하기 위해 스크립트는 다음을 사용하여 각 테이블 뒤에 페이지 나누기를 삽입합니다. wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. 그만큼 CreateTable 서브루틴은 각 테이블을 생성하고 형식화하기 위해 세 번 호출됩니다. 이 서브루틴은 머리글을 정의하고, 행과 열을 채우고, 테이블에 테두리 스타일을 적용합니다. .Rows(1).Range.Font.Bold = True 그리고 With wdTbl.Borders. 마지막으로 매크로는 다음을 사용하여 Word 응용 프로그램의 가시성을 true로 설정합니다. wdApp.Visible = True, 사용자가 생성된 문서를 볼 수 있는지 확인합니다. 이 접근 방식은 Excel의 여러 테이블을 단일 Word 문서로 효과적으로 통합하여 명확성과 형식을 유지합니다.

여러 Excel 표를 하나의 Word 문서로 통합

이 스크립트는 Excel에서 VBA를 사용하여 여러 테이블을 단일 Word 문서로 결합하고 각 테이블 뒤에 페이지 나누기를 완료하는 방법을 보여줍니다.

Sub ConsolidateTablesInOneDocument()
    Dim wdApp As New Word.Application
    Dim wdDoc As Word.Document
    Dim wdTbl As Word.Table
    Dim xlSht As Worksheet
    Dim lRow As Integer, lCol As Integer
    Dim r As Integer, c As Integer
    Dim Blanks As Integer, First As Integer, Second As Integer
    lRow = Sheets("Feedback Sheets").Range("A1000").End(xlUp).Row - 2
    Blanks = 0
    i = 1
    Do While i <= lRow
        Set rRng = Worksheets("Feedback Sheets").Range("A" & i)
        If IsEmpty(rRng.Value) Then
            Blanks = Blanks + 1
            If Blanks = 1 Then First = i
            If Blanks = 2 Then Second = i
        End If
        i = i + 1
    Loop
    Set xlSht = ActiveSheet: lCol = 5
    With wdApp
        .Visible = True
        Set wdDoc = .Documents.Add
        Call CreateTable(wdDoc, xlSht, 1, First, lCol)
        wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak
        Call CreateTable(wdDoc, xlSht, First + 1, Second, lCol)
        wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak
        Call CreateTable(wdDoc, xlSht, Second + 1, lRow, lCol)
    End With
End Sub
Sub CreateTable(wdDoc As Word.Document, xlSht As Worksheet, startRow As Integer, endRow As Integer, lCol As Integer)
    Dim wdTbl As Word.Table
    Dim r As Integer, c As Integer
    Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol)
    With wdTbl
        .Rows(1).Range.Font.Bold = True
        .Rows(1).HeadingFormat = True
        .Cell(1, 1).Range.Text = "Header 1"
        If lCol > 1 Then .Cell(1, 2).Range.Text = "Header 2"
        If lCol > 2 Then .Cell(1, 3).Range.Text = "Header 3"
        For r = startRow To endRow
            If (r - startRow + 2) > .Rows.Count Then .Rows.Add
            For c = 1 To lCol
                .Cell(r - startRow + 2, c).Range.Text = xlSht.Cells(r, c).Text
            Next c
        Next r
    End With
    With wdTbl.Borders
        .InsideLineStyle = wdLineStyleSingle
        .OutsideLineStyle = wdLineStyleDouble
    End With
End Sub

VBA를 사용하여 Excel 데이터를 Word에 병합

이 스크립트는 VBA를 사용하여 Excel 시트의 테이블을 단일 Word 문서로 병합하여 적절한 형식과 페이지 나누기를 보장합니다.

Sub MergeTablesIntoWord()
    Dim wdApp As New Word.Application
    Dim wdDoc As Word.Document
    Dim wdTbl As Word.Table
    Dim xlSht As Worksheet
    Dim lRow As Integer, lCol As Integer
    Dim r As Integer, c As Integer
    Dim Blanks As Integer, First As Integer, Second As Integer
    lRow = Sheets("Feedback Sheets").Range("A1000").End(xlUp).Row - 2
    Blanks = 0
    i = 1
    Do While i <= lRow
        Set rRng = Worksheets("Feedback Sheets").Range("A" & i)
        If IsEmpty(rRng.Value) Then
            Blanks = Blanks + 1
            If Blanks = 1 Then First = i
            If Blanks = 2 Then Second = i
        End If
        i = i + 1
    Loop
    Set xlSht = ActiveSheet: lCol = 5
    With wdApp
        .Visible = True
        Set wdDoc = .Documents.Add
        Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol)
        PopulateTable wdTbl, xlSht, 1, First, lCol
        wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak
        Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol)
        PopulateTable wdTbl, xlSht, First + 1, Second, lCol
        wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak
        Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol)
        PopulateTable wdTbl, xlSht, Second + 1, lRow, lCol
    End With
End Sub
Sub PopulateTable(wdTbl As Word.Table, xlSht As Worksheet, startRow As Integer, endRow As Integer, lCol As Integer)
    Dim r As Integer, c As Integer
    With wdTbl
        .Rows(1).Range.Font.Bold = True
        .Rows(1).HeadingFormat = True
        .Cell(1, 1).Range.Text = "Header 1"
        If lCol > 1 Then .Cell(1, 2).Range.Text = "Header 2"
        If lCol > 2 Then .Cell(1, 3).Range.Text = "Header 3"
        For r = startRow To endRow
            If (r - startRow + 2) > .Rows.Count Then .Rows.Add
            For c = 1 To lCol
                .Cell(r - startRow + 2, c).Range.Text = xlSht.Cells(r, c).Text
            Next c
        Next r
    End With
    With wdTbl.Borders
        .InsideLineStyle = wdLineStyleSingle
        .OutsideLineStyle = wdLineStyleDouble
    End With
End Sub

VBA를 사용하여 Word에서 테이블 만들기 및 서식 지정

VBA를 사용하여 Excel에서 Word로 데이터 전송을 자동화하는 경우 테이블을 효과적으로 관리하고 서식을 지정하는 방법을 이해하는 것이 중요합니다. 한 가지 중요한 측면은 구조와 가독성을 모두 유지하면서 데이터가 올바르게 전송되는지 확인하는 것입니다. 이를 위해서는 테이블 생성, 형식 지정 및 페이지 나누기 삽입을 제어하는 ​​VBA 명령을 이해해야 합니다. 예를 들어 다음 명령은 Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) Excel 데이터를 기반으로 행과 열 수를 지정하여 Word 문서에 새 테이블을 추가하는 데 사용됩니다.

또 다른 중요한 요소는 테이블 형식을 지정하는 것입니다. 다음과 같은 명령 .Rows(1).Range.Font.Bold = True 첫 번째 행을 굵게 표시하여 헤더를 표시하고, wdTbl.Borders 테이블의 안쪽 선과 바깥쪽 선 모두에 대한 테두리 스타일을 설정하는 데 사용됩니다. 또한 각 테이블이 별도의 페이지에 표시되도록 하려면 페이지 나누기를 삽입하는 것이 필수적입니다. wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. 이러한 명령을 종합적으로 사용하면 최종 문서가 잘 구성되고 전문적인 형식이 되도록 보장됩니다.

Word 및 Excel용 VBA 매크로에 대해 자주 묻는 질문

  1. VBA를 사용하여 새 Word 응용 프로그램을 시작하려면 어떻게 해야 합니까?
  2. 사용 Set wdApp = New Word.Application Word 응용 프로그램의 새 인스턴스를 초기화합니다.
  3. VBA를 사용하여 Word 문서에 페이지 나누기를 삽입하려면 어떻게 해야 합니까?
  4. 다음과 같이 페이지 나누기를 삽입합니다. wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak.
  5. VBA를 사용하여 Word 문서에 표를 어떻게 추가합니까?
  6. 다음을 사용하여 테이블을 추가합니다. wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol).
  7. 표의 첫 번째 행을 머리글 형식으로 지정하려면 어떻게 해야 합니까?
  8. 다음을 사용하여 첫 번째 행을 헤더로 설정합니다. .Rows(1).HeadingFormat = True 다음을 사용하여 굵게 표시합니다. .Rows(1).Range.Font.Bold = True.
  9. VBA를 사용하여 Word에서 표 테두리를 어떻게 설정합니까?
  10. 테두리를 설정하세요 wdTbl.Borders, 내부 및 외부 선의 스타일을 지정합니다.
  11. VBA에서 사용자에게 Word 응용 프로그램이 표시되도록 하려면 어떻게 해야 합니까?
  12. 다음을 사용하여 가시성을 설정하세요. wdApp.Visible = True.
  13. 현재 행이 기존 행 수를 초과하는 경우 테이블에 새 행을 추가하는 데 사용되는 명령은 무엇입니까?
  14. 다음을 사용하여 새 행을 추가합니다. If (r - startRow + 2) > .Rows.Count Then .Rows.Add.
  15. VBA를 사용하여 Word에서 새 문서를 어떻게 만듭니까?
  16. 다음을 사용하여 새 문서를 만듭니다. Set wdDoc = .Documents.Add.

마지막 생각들

VBA를 사용하여 여러 Excel 테이블을 단일 Word 문서로 결합하면 데이터 전송 및 서식 지정 프로세스가 간소화됩니다. 매크로는 테이블 생성, 서식 지정 및 페이지 나누기를 자동화하여 최종 문서가 잘 구성되고 전문적으로 표시되도록 보장합니다. 이 접근 방식은 시간을 절약하고 오류 위험을 줄여 다양한 플랫폼에서 데이터를 관리하고 표시하는 효율적인 솔루션이 됩니다.