아래 한/글 자동화에는 C++, 파이썬, 자바스크립트 등을 사용할 수 있습니다.
그런데 엑셀 파일을 읽어와서 한글 파일을 생성한다면
엑셀 VBA를 이용하면 좀 더 효율적일 수 있습니다.
VBA를 사용하면 별도의 프로그램 컴파일러가 필요 없습니다.
한글 파일에 접근할 때 엑셀 시트에 한글 Control을 삽입해서 제어할 수도 있는데
도구> 참조에서 HWPObject 등을 이용해서 아래 한/글창을 별도로 띄우고 해당 파일에 접근할 수 있습니다.
(물론 아래한/글 프로그램이 설치되어 있어야합니다.)
한글 제어에 사용되는 여러가지 명령들은 알기 어렵기 때문에 한글에서 여러가지 동작을 매크로 스크립트로 녹화를 한 다음 녹화된 코드를 약간 수정해서 사용하시면 편리합니다.

한글 Object의 구조입니다. 더 하위 개체의 구조는 자세히 나와있지 않습니다.

코드는 VBA에서 ExceuteMso 처럼 "InsertText", "TableCreate", "Goto", "MoveRight" 등
HAction.Run 이나 HAction.Execute 명령에 내장된 Action 명령 문자열을 Hwp 컨트롤에 넘겨서 실행하는 방식을 많이 이용합니다.
Set App = CreateObject("HwpFrame.HwpObject.2")
If App Is Nothing Then Exit Sub
'문서 열기
App.Open Environ("Userprofile") & "\Desktop\한글표.hwp", "HWP", "versionwarning:false"
Set hWindow = App.XHwpWindows.Active_XHwpWindow
hWindow.Visible = True
App.HAction.GetDefault "InsertText", App.HParameterSet.HInsertText.HSet
App.HParameterSet.HInsertText.Text = "글자입력"
App.HAction.Execute "InsertText", App.HParameterSet.HInsertText.HSet
App.HAction.GetDefault("Print", App.HParameterSet.HPrint.HSet); // 액션 초기화
App.HParameterSet.HPrint.NumCopy = 3; //인쇄 매수를 3장으로 지정
App.HAction.Execute("Print", App.HParameterSet.HPrint.HSet); // 액션 수행
위 코드는 간단히 파일을 열고 문자열을 문서에 삽입하거나 인쇄명령을 실행하는 코드입니다.
명령을 실행할 때는 주로 HAction.GetDefault로 기본 옵션을 초기화한 후
HParameterSet 으로 여러가지 옵션 파라미터 값을 설정한 다음
최종적으로 HAction.Execute 혹은 Run으로 명령을 실행하는 방식입니다.
참고로, 웹상에서 미리 코드를 실행해볼 수도 있습니다.

다음으로 이러한 기본 코드를 바탕으로 이번 작업의 목표대로 엑셀 셀값들을 한글 표에 넣어주면 됩니다.

샘플 코드를 첨부합니다.
아래는 바탕화면의 '한글표.hwp' 파일을 열어서
현재 엑셀 시트의 A1:D5에 있는 값들을 가져와서
한글 파일의 가장 첫번째 표의 셀에 차례로 입력해주는 VBA 코드입니다.
Option Explicit
Sub Test1()
Dim App As HwpObject
Dim hWindow As Object
Dim Doc As Object, ctrl As Object
Dim rng As Range, Found As Boolean
Set App = CreateObject("HwpFrame.HwpObject.2")
If App Is Nothing Then Exit Sub
'보안 경고 안뜨게
App.RegisterModule "FilePathCheckDLL", "AutomationModule"
'새 창 생성
'App.XHwpWindows.Add
'문서 열기
App.Open Environ("Userprofile") & "\Desktop\한글표.hwp", "HWP", "versionwarning:false"
'Set Doc = App.XHwpDocuments.Item(0)
Set hWindow = App.XHwpWindows.Active_XHwpWindow
hWindow.Visible = True
'표를 찾아 이동
' App.HAction.GetDefault "Goto", App.HParameterSet.HGotoE.HSet
' With App.HParameterSet.HGotoE
' .HSet.SetItem "DialogResult", 55 '표 조판부호 찾기
' .SetSelectionIndex = 5
' End With
' App.HAction.Execute "Goto", App.HParameterSet.HGotoE.HSet
'첫번째 표를 찾아 이동
Set ctrl = App.HeadCtrl
Do While Not ctrl Is Nothing
If ctrl.CtrlID = "tbl" Then
With ctrl.GetAnchorPos(0)
App.SetPos .Item("List"), .Item("Para"), .Item("Pos")
End With
Found = True
Exit Do
End If
Set ctrl = ctrl.Next
Loop
If Not Found Then MsgBox "표가 없습니다.": Exit Sub
App.HAction.Run "MoveRight"
For Each rng In Range("A1:D5")
'오른쪽셀로 이동, 셀 내용 삭제
'App.HAction.Run "MoveRight"
App.HAction.Run "SelectAll"
'App.HAction.Run "Delete"
'App.HAction.Run "TableCellBlock"
'문자열 입력
App.HAction.GetDefault "InsertText", App.HParameterSet.HInsertText.HSet
App.HParameterSet.HInsertText.Text = rng.Value
App.HAction.Execute "InsertText", App.HParameterSet.HInsertText.HSet
App.MovePos 101, 0, 0 '101:"moveRightOfCell"
Next rng
'App.XHwpMessageBox.String = "완료"
'App.XHwpMessageBox.DoModal
'저장
'App.Save ""
'App.SaveAs Environ("Userprofile") & "\Desktop\test.hwp", "HWP", ""
Set App = Nothing
End Sub
실행 화면:

최근댓글