한글 엑셀 연결

안녕하세요.

현재 한글 2020, 엑셀 2019을 사용하며, 한글 표 내용을 엑셀로 옮기는 매크로를 개발중에 있습니다.(vba 사용)
다름이 아니고 hwpctrl.ocx 사용하지 않고,

xhwpdocument.item, xhwpwindow. close와 같은 구문등에서 "개체 속성 또는 메소드를 지원하지 않는다"는 438에러가 나옵니다.

제가 생각하기로는 오탈자 때문에 생기는 오류는 아닌거 같아서 문의 드립니다. 감사합니다.

1개의 좋아요

안녕하세요.

샘플코드를 첨부해주시면 확인해보도록 하겠습니다.

1개의 좋아요

안녕하세요.

'1. Hwp.exe /Regserver 재 등록 후 확인
'2. 이전에 엑셀과 한글 연동 vba매크로 개발 문의가 있어서 가이드한 예제를 첨부드립니다.
(https://www.youtube.com/watch?v=iz1QqEZIbas 영상같은 동작을 한글과 연동할 수 있는지에 대한 문의)

Sub txtreplace()

    Dim oCell  As Integer
    Dim from_text As String, to_text As String
    Dim WA As Object
    Dim RowCount As String
    
    Dim strFilter As String
    Dim fileNames As Variant
    Dim fileName As Variant
    Dim strFile As String
    
    ChDir ThisWorkbook.Path
    strFilter = "Hwp 파일 (*.Hwp),*.hwp*"
    fileNames = Application.GetOpenFilename(strFilter, , Title:="단어를 바꿀 파일을 선택(다중 선택 가능)", MultiSelect:=True)

    If TypeName(fileNames) = "Boolean" Then Exit Sub

    Set hwp = CreateObject("HWPFrame.HwpObject.2")
    Set Window = hwp.XHwpWindows.Active_XHwpWindow
    Window.Visible = True
    
    For Each fileName In fileNames
        Dim ret As Boolean
        ret = hwp.Open(fileName, "", "")
                
        RowCount = Sheet1.Range("a1", Range("a1").End(xlDown)).Rows.Count
    
        For oCell = 2 To RowCount
            from_text = Sheet1.Range("A" & oCell).Value
            to_text = Sheet1.Range("B" & oCell).Value
            
            Set findAction = hwp.HAction
            Set findReplaceObj = hwp.HParameterSet.HFindReplace
            Set findReplaceSet = findReplaceObj.HSet
            
            ret = findAction.GetDefault("AllReplace", findReplaceSet)
            With findReplaceObj
                .ReplaceString = to_text
                .FindString = from_text
                .IgnoreReplaceString = 0
                .IgnoreFindString = 0
                .Direction = hwp.FindDir("AllDoc")
                .WholeWordOnly = 0
                .UseWildcards = 0
                .SeveralWords = 0
                .AllWordForms = 0
                .MatchCase = 0
                .ReplaceMode = 0
                .ReplaceStyle = ""
                .FindStyle = ""
                .FindRegExp = 0
                .FindJaso = 0
                .HanjaFromHangul = 0
                .IgnoreMessage = 1
                .FindType = 1
            End With
            ret = findAction.Execute("AllReplace", findReplaceSet)
            Rem With WA
                Rem .Activate
                Rem With .Selection.Find
                  Rem .ClearFormatting
                  Rem .Replacement.ClearFormatting
    
                  Rem .Text = from_text
                  Rem .Replacement.Text = to_text
                  Rem .Execute replace:=wdReplaceAll
                Rem End With
            Rem End With
        Next
    Next fileName
End Sub
1개의 좋아요

1개의 좋아요

먼저 이미지로 첨부하는 점 죄송합니다.

이 코드를 돌리면 set hwpdoc = hwp ~ 부분에 디버거 노란줄이 생기며 438에러가 발생합니다.

1개의 좋아요

Regserver 등록할때 오류가 뜨면서 잘안되네요… 도움주셔서 감사합니다!

1개의 좋아요

hwpApp에서는 문서를 관리하는 컨테이너 개체명은 XHwpDocuments입니다.
그래서 아래처럼 수정해야 할 것 같습니다.

  • XHwpDocument → XHwpDocuments
set hwpDoc = hwpApp.XHwpDocuments.Item(0)

감사합니다.

1개의 좋아요

덕분에 해결했습니다. 도움주셔서 감사합니다.

1개의 좋아요