본문 바로가기
VBA/VBA + 아래아한글 자동화

[한글자동화] 아래아 한글 표 제어하기 #3

by 일등미노왕국 2023. 9. 21.

기존까지는 표를 찾아 들어가서 같은 내용을 무한 반복하는 코드였다면
오늘 선보일 아래아 한글 자동화는 기존에는 VBA에 좀더 특화되었던 코드를 이번에는 한글을 사용하시는 분들에게 좀 더 전문적이고, 실무에서 더 많이 사용되는 방식으로 바꿨다
 
실제로 누름틀을 구성하는것 까지 VBA로 작성하였지만, 실무에서는 기본적으로 한글에서 누름틀 작업을 끝낸 후에 그것을 불러들이면서 누름틀을 이용하는 코드를 더 많이 선호하고 이용하고 있다.
 
이 부분에 대해서는 표제어하기 #4에서 선보이기로 하겠다.
 

hwp.addTable 1, 1, 40, 50                    
hwp.setFont "함초롬돋움", 15                    
hwp.alignmentCenter                             
hwp.CreateField "이름", "홍길동"                
hwp.Enter
hwp.setFont "함초롬돋움", 13                     
hwp.CreateField "부서", "영업부"                
hwp.Enter
hwp.CreateField "연락처", "010-1234-1234"

 코드의 설명은 40 X 50의 표를 하나 만들어서 이름 / 부서 / 연락처의 누름틀을 구성하겠다는 의미이다.
 

이렇게 만들어진 누름틀 샘플을 출력할 만큼 복사하게 된다.

hwp.tableExit                                
hwp.MoveSelNextWord                           
hwp.Copy                                    
hwp.Cancle                                      

hwp.moveLineEnd                                 

For i = 1 To 14
     hwp.Paste                                 
Next i

이 코드는 만들어진 표 에서 빠져나온 후 표 자체를 블럭처리해서 잡고 이를 복사한 후 표의 끝에서부터 출력할 만큼 복사 붙혀넣기를 하겠다는 의미인데, 이미 표가 하나 만들어졌기 때문에 총 갯수에서 1을 뺀 만큼만 붙혀넣기를 진행하게 된다.
 

이렇게 처음에 세팅한대로 이름표가 생성이되게 된다.
 
기존에 표찾기 방식은 문서의 처음으로 다시 캐럿(커서)를 옮겨 주어야 하고, 표를 다 찾았다는 팝업도 해제해야 하지만  누름틀은 자체가 고유 번호를 가지고 있기 때문에 그 번호에 출력할 내용물을 넣어주기만 하면 된다.
 

여기서 유념해야 할것은 

hwp.PutFieldText CStr(FieldN(i)), rngX(1, j)

PutFieldText는 매개변수로 string을 2개 받기 때문에 배열로 받은것을 Cstr로 문자형으로 바꿔줘야 한다.
 

더보기
Sub 이름표만들기_3()

    Dim fbln As Boolean: fbln = True
    Dim strPath$, v As Object
    Dim i&, j&
    Dim rngX As Range: Set rngX = [e7]
    Dim FieldN
  
    strPath = ThisWorkbook.path & "\한글자동화.exe"  '= 보안모듈 자동 선택 / 개인의 환경에 따라 안될 수도 있음
    Shell strPath                                    '= 본인의 한글버전은 2020 버전이다.
    
    hwp.NewDocument                                 '= 새문서
    
    hwp.setPaperMargin 10, 10, 10, 10, 15, 15       '= 페이지 크기 설정
    
    hwp.addTable 1, 1, 40, 50                       '= 표하나 생성 / 40 X 50
    hwp.setFont "함초롬돋움", 15                     '= 기본 폰트 설정과 크기
    hwp.alignmentCenter                             '= 가운데 정렬
    hwp.CreateField "이름", "홍길동"                 '= 누름틀 설정 / 이름
    hwp.Enter
    hwp.setFont "함초롬돋움", 13                     '= 기본 폰트 설정과 크기
    hwp.CreateField "부서", "영업부"                 '= 누름틀 설정 / 부서
    hwp.Enter
    hwp.CreateField "연락처", "010-1234-1234"        '= 누름틀 설정 / 연락처
    
    hwp.tableExit                                   '= 테이블 나오기
    hwp.MoveSelNextWord                             '= 테이블 블럭설정
    hwp.Copy                                        '= 테이블 복사
    hwp.Cancle                                      '= 테이블 블럭 해제
    
    hwp.moveLineEnd                                 '= 현재는 셀이 하나뿐이므로 끝으로 이동
             
    For i = 1 To 14
         hwp.Paste                                  '= 14개의 셀을 만들어라 / 총 15개
    Next i
    
    hwp.selectAll                                   '= 페이지 전체 선택
    hwp.alignmentCenter                             '= 가운데 정렬
    
    hwp.MoveDocStart                                '= 문서의 처음으로 이동
    
    FieldN = hwp.GetFieldNameList                   '= 누름틀 정보
    
    For i = 0 To UBound(FieldN, 1)                   '= 누름틀의 갯수
        If j = 3 Then
        j = 1: Set rngX = rngX.Offset(1)
        Else: j = j + 1: End If
        hwp.PutFieldText CStr(FieldN(i)), rngX(1, j) '= 각각의 누름틀에 출력
    
    Next i
   
    Application.SendKeys "{F1}"                      '= 보안모듈해제가 계속 실행이 되는데 그것을 끄는 단축키를 F1으로 설정하였다.
                                                     '= 이건 변동이 되지 않는다. / 변동하기 위해서는 EXE파일을 새로 만들어야 한다.
    hwp.SaveAs ThisWorkbook.path, "이름표_완성"
    
    closeFile                                        '= 한글문서 닫기
    closeHwp                                         '= 한글 닫기

End Sub

더 재밌는 코드로 만나길...

이름표만들기 3.zip
0.73MB

댓글