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

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

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

기존 우리는 표와 표사이를 옮겨갈때 화살표로 움직이곤 했다.

이게 표와 표 사이가 몇개 안될때는 문제없지만 3페이지만 넘어가도 이렇게 하드 코딩해서는 완전 자동화를 영위할 수 없다..

 

표와 표를 넘나들기 위해서는 우선 표 객체만 찾을 수 있는 방법이 있는지 확인하여야 한다.

 

한글에서는 alt + g 를 누르면 찾아가기가 나오는데 거기서 조판 부호를 선택 후 표를 찾아서 [가기]를 누르면 캐럿(커서)가 있는 위치에서 가장 가까운 표를 찾을 수 있지만 표 안에는 들어가지 않는다.

 

그럼 우리는 문서의 가장 처음으로 커서를 위치한 후 표 찾는 스크립트를 반복하면 되지만, 표안에는 들어가지 않으니 표에 들어가서 어떤 행위를 하는 코드를 추가해주면 될것이다.

Do
    hwp.FindTable fbln                      '= 표 찾기
    If fbln = False Then Exit Do            '= 더이상 찾을 표가 없을때까지 반복
    hwp.WriteText i & "번째 표이동"
    i = i + 1
Loop

FindTable은 본인이 만드는 추가 함수로 더이상 찾을 표가 없으면 fbln이 false를 출력하게 된다. 

 

 

Sub FindTable(fbln As Boolean)
    R = HAction.GetDefault("Goto", HParameterSet.HGotoE.HSet)
    
    With HParameterSet.HGotoE
        R = .HSet.SetItem("DialogResult", 55)               '= 표로 찾기
        .SetSelectionIndex = 5                              '= 조판부호
    End With
    
    R = HAction.Execute("Goto", HParameterSet.HGotoE.HSet)
    fbln = R
    Run "MoveUp"
    Run "MoveDown"                                          '= 표에 들어가기
End Sub

표찾기를 무한루프를 통해 반복하면서 더이상 찾을 표가 없다는 fbln이 나오면 do ~ loop를 탈출하게 된다. 

 

한글을 하다보면 찾기나 바꾸기가 나오면서 계속 찾을 거라는 팝업이 나오는데

hwp.NewDocument
hwp.OpenHwpDocument "표이동하기"            '= 표이동하기를 불러와라
hwp.MoveDocStart                            '= 문서의 처음으로 이동해라
hwp.NonePopUP                               '= 한글 팝업제거

 

hwp.NonePopUP은 그 팝업을 완전히 제거한다.

 

Function NonePopUP()
    R = hwp.SetMessageBoxMode(val(&H20000))
End Function

NonePopUP 함수는 이번 테스트를 위해서 만든 코드이며, 말했듯 팝업을 제거하는 코드이다.

 

정리하면 샘플문서인 [표이동하기] 를 불러와서 표들을 순환하면서 표의 처음으로 들어가서 몇번째 표이동인지 출력하는 구문이다.

 

하나씩 함수나 스크립트를 업데이트 하고 있는데 이렇게 몇번더 고생하면 재밌는 라이브러리가 만들어질듯하다.

그럼 이만~~~

더보기
Sub 표이동_테스트()

    Dim fbln As Boolean: fbln = True
    Dim i&
    Dim strPath$
  
    strPath = ThisWorkbook.path & "\한글자동화.exe"  '= 보안모듈 자동 선택 / 개인의 환경에 따라 안될 수도 있음
    Shell strPath                                    '= 본인의 한글버전은 2020 버전이다.
    
    
    hwp.NewDocument
    hwp.OpenHwpDocument "표이동하기"            '= 표이동하기를 불러와라
    hwp.MoveDocStart                            '= 문서의 처음으로 이동해라
    hwp.NonePopUP                               '= 한글 팝업제거
    i = 1
    Do
        hwp.FindTable fbln                      '= 표 찾기
        If fbln = False Then Exit Do            '= 더이상 찾을 표가 없을때까지 반복
        hwp.WriteText i & "번째 표이동"
        i = i + 1
    Loop
    
    Application.SendKeys "{F1}"                 '= 보안모듈해제가 계속 실행이 되는데 그것을 끄는 단축키를 F1으로 설정하였다.
                                                '= 이건 변동이 되지 않는다. / 변동하기 위해서는 EXE파일을 새로 만들어야 한다.
    hwp.SaveAs ThisWorkbook.path, "표이동학습"
    
    SaveAs ThisWorkbook.path, "표이동학습"
    closeFile
    closeHwp

End Sub

 

 

 

한글표이동.zip
0.72MB

댓글