기존까지는 표를 찾아 들어가서 같은 내용을 무한 반복하는 코드였다면
오늘 선보일 아래아 한글 자동화는 기존에는 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
더 재밌는 코드로 만나길...
'VBA > VBA + 아래아한글 자동화' 카테고리의 다른 글
[한글자동화] 아래아 한글 표 제어하기 #2 (0) | 2023.09.17 |
---|---|
[한글자동화] 아래아 한글 표 제어하기 (0) | 2023.09.07 |
[한글자동화] 엑셀 문단을 한글표에 정리하기 (0) | 2023.09.07 |
[한글자동화] 텍스트 색상변경 (0) | 2023.09.04 |
[한글 자동화] 자간 맞추기 + 줄바꿈 (0) | 2023.09.02 |
댓글