Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

냥집사의 개발일지

VBA - VBA로 표 생성하기 (from Excel to Word) 본문

VBA

VBA - VBA로 표 생성하기 (from Excel to Word)

깅햄찌 2022. 8. 29. 21:21
반응형

안녕하세요~ 오늘은 VBA로 Word에서 표를 생성해볼 겁니다.

사실 Excel에서는 Excel 자체가 거대한 표이기 때문에 각 셀에 접근해서 데이터를 입력하면

그 자체가 표라고 할 수 있는데요. 그 방법도 어렵지 않아

 Excel에서 표를 만드는 방법은 구글링 하면 쉽게 찾을 수도 있습니다.

 

다만, Word에서는 범위(Range)를 설정하는 방법 및 표를 직접 생성(추가)해줘야 하는 만큼

Excel에서 표를 생성하는 법 보단 까다로운 부분이 있습니다.

(혹시 저만 어려운 건가요? ㅎ)

 1가지 예제를 통해 Excel에서 Word 파일에 표를 추가해보겠습니다.

예제 1.  표 1개 생성하기 하고 표 안에 데이터 삽입하기

 

Alt+F11 눌러서 VBA 편집기 실행 후 아래 코드를 적어줍니다.

 

2022.08.28 - [VBA] - VBA - VBA를 이용하여 Excel에서 Word로 데이터 복사하기

 

VBA - VBA를 이용하여 Excel에서 Word로 데이터 복사하기

최근 Excel에 있는 데이터들을 Word로 복사할 일이 있었는데요. 데이터 양이 너무 많아서 자동화시켜야겠다고 생각했습니다. 다행히 VBA를 이용하여 Excel에서 Word로 데이터를 복사하는 방법이 있어

leggo-fire.tistory.com

저번 포스팅을 보면 아래 코드를 이해하기 쉬워요~~

 

Sub add_table()

    'Declare part
    Dim wd_app As Word.Application
    Dim wd_doc As Word.Document
    Dim wd_range
    Dim wd_table
      
    'Creating a new instance of word only if there no other instances
    Set wd_app = New Word.Application
    
    'Make word window visible on monitor
    wd_app.Visible = True

    'Creating a new document
    Set wd_doc = wd_app.Documents.Add()

    Set wd_range = wd_doc.Range(Start:=0, End:=0)
    wd_doc.Tables.Add Range:=wd_range, NumRows:=3, NumColumns:=4
    Set wd_table = wd_doc.Tables(1)

    'Enable the borders of table using table object.
    wd_table.Borders.Enable = True

    'Fill the data in table
    wd_table.Cell(1, 1).Range.Text = "Hello"

    'saving the document
    wd_doc.SaveAs2 "add_table"

End Sub
 

저번 포스팅의 코드와 대동소이하기에 핵심 코드만 살펴보겠습니다. 

 Set wd_range = wd_doc.Range(Start:=0, End:=0)

먼저 Word의 Range를 설정해주어야합니다.

저는 Word 파일의 가장 첫 부분에 표를 삽입하기 위해

Range를 (Range(start:=0,End:=0))로 설정하였습니다. 

(Range(0,0) or Range 도 가능!!)

 

(https://docs.microsoft.com/en-us/office/vba/api/word.range)

위의 링크에서 Range에 기본 사용법을 참고하세요~

   

wd_doc.Tables.Add Range:=wd_range, NumRows:=3, NumColumns:=4

Add 함수를 통해 표를 삽입하였습니다.

저는 3행 4열의 표를 만들었습니다. 

Add 함수의 사용법 : Add 범위, 행의 개수, 열의 개수


Set wd_table = wd_doc.Tables(1)

생성한 표를 계속해서 접근할 수 있도록 wd_table변수에 저장해줍니다.

Word에 표는 Tables(index) 로 접근 가능합니다.  



   
wd_table.Borders.Enable = True

Borders.Enable에 True를 대입하면 표에 테두리가 생성됩니다.

False면 테두리가 없는 상태의 표가 생성됩니다!!




wd_table.Cell(1, 1).Range.Text = "Hello"

Cell property를 이용해 표의 세부 위치를 특정한 후 Text property에 대입할 문자를 입력합니다.

저는 Hello를 입력해보겠습니다!!

3행 4열의 표가 생성되고 표의 1행 1열에 Hello 문자가 삽입된 것까지 확인할 수 있었습니다!!

다음 포스팅은 표 2개 이상을 삽입하는 방법을 공유해드리려고 합니다.

표 1개도 생성했는데 2개도 쉽겠지라고 생각했다가 많이 헤맸습니다 ㅠ

(혹시 이것도 나만? 어려운 건가 ㅜ)

긴 포스팅 읽어주셔서 감사합니다. 

좋은 하루 보내세요~~

 

Comments