안녕하세요.
현재 한글 2020, 엑셀 2019을 사용하며, 한글 표 내용을 엑셀로 옮기는 매크로를 개발중에 있습니다.(vba 사용)
다름이 아니고 hwpctrl.ocx 사용하지 않고,
xhwpdocument.item, xhwpwindow. close와 같은 구문등에서 "개체 속성 또는 메소드를 지원하지 않는다"는 438에러가 나옵니다.
제가 생각하기로는 오탈자 때문에 생기는 오류는 아닌거 같아서 문의 드립니다. 감사합니다.
안녕하세요.
현재 한글 2020, 엑셀 2019을 사용하며, 한글 표 내용을 엑셀로 옮기는 매크로를 개발중에 있습니다.(vba 사용)
다름이 아니고 hwpctrl.ocx 사용하지 않고,
xhwpdocument.item, xhwpwindow. close와 같은 구문등에서 "개체 속성 또는 메소드를 지원하지 않는다"는 438에러가 나옵니다.
제가 생각하기로는 오탈자 때문에 생기는 오류는 아닌거 같아서 문의 드립니다. 감사합니다.
안녕하세요.
샘플코드를 첨부해주시면 확인해보도록 하겠습니다.
안녕하세요.
'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
먼저 이미지로 첨부하는 점 죄송합니다.
이 코드를 돌리면 set hwpdoc = hwp ~ 부분에 디버거 노란줄이 생기며 438에러가 발생합니다.
Regserver 등록할때 오류가 뜨면서 잘안되네요… 도움주셔서 감사합니다!
hwpApp에서는 문서를 관리하는 컨테이너 개체명은 XHwpDocuments입니다.
그래서 아래처럼 수정해야 할 것 같습니다.
set hwpDoc = hwpApp.XHwpDocuments.Item(0)
감사합니다.
덕분에 해결했습니다. 도움주셔서 감사합니다.
–한글파일에 모든표를 엑셀로 옮겨줍니다…엑셀로 옮긴다음 엑셀 매크로 쓰면 됩니다.
–300개가 넘는 학교조사 자료중 테이블 데이터가 필요해서요…기초 코드이고 폴더별 작업은 아래 2번째 참조여
import os
from pyhwpx import Hwp
import win32com.client as win32
xl=win32.gencache.EnsureDispatch(“Excel.Application”)
xl.Workbooks.Open(“c:\sample\정리.xlsx”)
xl.Visible=True
hwp = Hwp()
hwp.open(“c:\sample\aa.hwp”)
j=1
for ctrl in hwp.ctrl_list:
if ctrl.UserDesc == “표”:
hwp.select_ctrl(ctrl)
hwp.Run(“ShapeObjTableSelcell”)
hwp.Run(“TableCellBlockExtend”)
hwp.Run(“TableCellBlockExtend”)
hwp.Run(“Copy”)
xl.ActiveSheet.Cells(j,1).Select()
xl.ActiveSheet.Paste()
j=j+100
—2번째 hwp파일 몽땅 엑셀 쉬트1개에 복사하기여…유용합니다. 데이터 취합에는
import win32com.client
from pyhwpx import Hwp
import os
hwp = Hwp()
xl = win32com.client.Dispatch(“Excel.Application”)
xl.Visible=True
wb = xl.Workbooks.Add()
ws1 = xl.Worksheets.Add()
ws1.Name=“정리”
file_list = os.listdir(“C:\sample\”)
j=0
rows=1
for i in range(1, 10):
text1=“c:\sample\” + file_list[j]
hwp.open(text1)
hwp.Run(“Close”) #표 빠져 나오기 select all 위해서
hwp.Run(“SelectAll”) # 전체 선택
hwp.Run(“Copy”) # 복사
xl.ActiveSheet.Cells(rows,1).Select()
xl.ActiveSheet.Paste()
j=j+1
rows=rows+500