묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
pyhwpx에서 한글 창을 최대로 키우는 코드가 무엇인가요
질문 남겨주셔서 감사합니다.막히면 언제든 무엇이든 자주 질문 던져주세요.수학/과학이나 알고리즘과는 달리업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다.다시 말씀드리지만, 질문을 자주자주 남겨주세요.저도 최대한 빠르게 회신 드리겠습니다.당부드릴 두 가지가 있습니다.① 가급적 구체적으로 설명해주세요.② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ====================================pyhwpx 라이브러리 사용 중 문의드립니다.win32라이브러리로 창을 키워뒀다가 pyhwpx로 텍스트를 삽입하기 위해 객체를 선언하면다시 창이 작아지는 문제가 있습니다.pyhwpx에서 한글 창을 최대로 키우는 코드가 무엇일까요?pyhwpx는 관련 정보를 찾을 수가 없어 문의드립니다.늘 감사합니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
한PDF에서 PDF파일을 한글 파일로 변환시키는 부분을 파이썬 코드를 통해 자동화시킬 수 있을까요?
안녕하세요 일코님좋은 강의를 해주셔서 감사합니다. 제가 지금 하고 있는 작업은 한글파일이 pdf파일로 변환된 파일을 다시 한글파일로 변환하는 것입니다.이때, 한PDF를 사용하면 한글파일로 아주 나이스하게 변환되는 것을 보고이걸 파이썬으로 자동화할 수 없을까 고민하고 있습니다. pdf를 일반 파이썬 라이브러리로 읽어와서 text로 변환하는 코드말고한pdf의 기능을 이용하여 pdf를 한글파일로 바로 변경할 수 있는 라이브러리나 코드가 있을까요? 늘 감사드립니다
-
미해결직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
한글 파일의 표에서 내용을 추출하여 다른 한글파일에 넣는 방법이 궁금합니다.
안녕하세요. 좋은 강의 잘 듣고 있습니다. 감사합니다. 이번에 실무에 적용해보려고 이 강의를 수강하였는데요,제가 하고 싶은 자동화는 한글파일로 된 신청서의 표에 적힌 정보를 가져와서다른 한글파일의 표에 넣는 것입니다. 강의를 듣던 중 한글 파일의 표를 생성하고 쓰는 것은 알게 되었는데한글 파일에 작성된 표에서 정보를 가져오는 방법은 알지 못해 질문드립니다. 감사합니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
hwp.Execute 의 True,False를 이용한 반복문
안녕하세요 일코님 강의 잘 듣고 있습니다. 한글 찾기를 이용해서 작업을 하고 있습니다. 다른 부분은 모두 잘 작동하는 데 while문 제어가 어려워서 문의 드립니다. 문서에서 직접 ctrl+f로 찾기를 해보면 마지막이 나오는데 파이썬 코드를 이용하면 False값을 뱉지 않고 무한루프에 빠집니다. 작업 내용은 "[1 " 를 찾아서 표 안에 있으면 표 전체를 저장하고, "[1"이 본문에 있으면 본문 내용을 저장해서 다른 문서에 저장하는 작업입니다. import os from tkinter import Tk from tkinter.filedialog import askopenfilename import win32com.client as win32 def 한글_열기(한글파일): hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule") hwp.Open(한글파일) return hwp def 한글_찾기(문자열): hwp.HAction.GetDefault("RepeatFind", hwp.HParameterSet.HFindReplace.HSet) hwp.HParameterSet.HFindReplace.FindString = 문자열 hwp.HParameterSet.HFindReplace.Direction = hwp.FindDir("Forward") hwp.HParameterSet.HFindReplace.IgnoreMessage = 1 hwp.HParameterSet.HFindReplace.FindType = 1 cond = hwp.HAction.Execute("RepeatFind", hwp.HParameterSet.HFindReplace.HSet) print(cond) return cond def 문서_처리(): if (hwp.GetPosBySet().Item("List") == 0) : hwp.HAction.Run("MoveParaBegin") spara = hwp.GetPosBySet().Item("Para") spos = hwp.GetPosBySet().Item("Pos") hwp.HAction.Run("MoveParaEnd") epara = hwp.GetPosBySet().Item("Para") epos = hwp.GetPosBySet().Item("Pos") blockSelect(spara, spos, epara, epos) textArr.append(hwp.GetTextFile("HWP", "saveblock")) hwp.HAction.Run("Cancel") else : hwp.HAction.Run("CloseEx") spara = hwp.GetPosBySet().Item("Para") spos = hwp.GetPosBySet().Item("Pos") hwp.HAction.Run("MoveParaEnd") epara = hwp.GetPosBySet().Item("Para") epos = hwp.GetPosBySet().Item("Pos") blockSelect(spara, spos, epara, epos) textArr.append(hwp.GetTextFile("HWP", "saveblock")) hwp.HAction.Run("MoveParaEnd") hwp.HAction.Run("Cancel") def blockSelect(spara, spos, epara, epos): hwp.SelectText(spara, spos, epara, epos) if __name__ == '__main__': os.chdir(os.path.join(os.environ["USERPROFILE"], "desktop")) BASE_DIR = os.getcwd() root = Tk() 한글파일 = askopenfilename(title=" HWPX 파일을 선택해 주세요.", initialdir=BASE_DIR, filetypes=[("아래아한글", "*.hwp *.hwpx")]) root.destroy() hwp = 한글_열기(한글파일) hwp.MovePos(2, 0, 0) textArr = [] while True: # for _ in range(8): if 한글_찾기("[1"): 문서_처리() else: break hwp.Run("FileNew") # 빈 문서 생성 for k in range(len(textArr)): hwp.SetTextFile(textArr[k], "HWP", "insertfile") hwp.HAction.Run("MoveParaEnd") hwp.HAction.Run("BreakPara") hwp.HAction.Run("BreakPara") hwp.HAction.Run("StyleShortcut1") hwp.HAction.Run("StyleShortcut1") hwp.SaveAs(os.path.join(os.getcwd(), "result2.hwpx")) # 현재 위치에 다른이름으로 저장 hwp.Quit() print('모두 완료')
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
단순한 파이썬 문법 질문인거 같긴 한데여 ㅠㅠ
감사합니다.!!!열심히 따라가며 공부하고 있는데,,아직은 파이썬 자체의 문법도 잘 모르고 있어서열심히 검색하며 공부하고 있습니다. ㅠㅠ필수보직기간 내 전보 사전승인통보서 자동화 프로젝트필수보직기간 내 전보 사전승인통보서 자동화 프로젝트그 중에서<필수보직기간 내 전보 사전승인통보서 자동화 프로젝트>for 행인덱스, 행데이터 in enumerate(엑셀데이터): 사전전보승인일, 직급, 전보대상자, 전보일, 기존부서, 전보부서, 근무시작일, 근무종료일, 근무기간, 전보유형 = 행데이터요 부분이 이해가 안갑니다...사전전보승인일, 직급, 전보대상자, 전보일, 기존부서, 전보부서, 근무시작일, 근무종료일, 근무기간, 전보유형 = 행데이터이 과정이 어떤 과정을 처리하는건가요?a,b,c,d = e 구조인데 이것이 무엇을 의미하는지 모르겠습니다. 인덱스(??)를 붙이는건가여?
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
hwp&표를 데이터베이스로 활용하기 위해서
안녕하세요.일코님 강의 들으면서, hwp를 데이터베이스로 활용하는 방법을 많이 고심하고있는데요. 예를들어 영어 구문 1000문장이 데이터베이스로 아래와같이 hwp상의 표로 존재한다고 할때,위와 같이 번호별로 영어구문의 답지를 데이터베이스로 삼고, 학생별로 틀린 문장을 기록한뒤에 함수를 작동시키면 학생별로 틀린 문항번호의 답지만 hwp로 출력할 수 있게 해주고자 합니다. 그런데 문제는, 학생별로 틀린문장이 다 다르기 때문에,학생별로 뽑아줄 hwp의 표의 행 수를 미리 정해놓을 수 없다는 점입니다. 그렇다고 표의 행수를 무작정 많이 만들어놓으면, 표의 행이 너무 많이 비게 되어 종이 낭비가 발생하구요..논리적으로 이 문제를 어떻게 해결할 수 있을까요? 늘 감사합니다^^
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
파이썬으로 한글오피스에 저장한 매크로를 실행할 수 있나요?
안녕하세요. 궁금한 사항이 있어서 질문 드립니다.문서에서 모든 수식에 alt + 2( 한글오피스에 저장한 2번째 매크로)를 적용하고 싶습니다.챗 gpt는 pyautogui.hotkey('alt', '2') 를 이용하라고 하는데 적용이 되지 않아서 질문 드립니다. ctrl = hwp.HeadCtrl while ctrl: if ctrl.CtrlID == "eqed": eqedCtrls.append(ctrl) ctrl = ctrl.Next for ctrl in eqedCtrls: hwp.SetPosBySet(ctrl.GetAnchorPos(0)) hwp.FindCtrl() pyautogui.hotkey('alt', '2') hwp.Run("Cancel")
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
페이지 단설정 매크로스크립트 미작동
안녕하세요 일코님 페이지의 단을 1단으로 변경하기 위해서,한글에서 매크로 녹화를 하여 스크립트를 아래와 같이 땄습니다. HAction.GetDefault("MultiColumn", HParameterSet.HColDef.HSet); with (HParameterSet.HColDef) { Type = ColDefType("Newspaper"); CreateItemArray("WidthGap", 1); WidthGap.Item(0) = MiliToHwpUnit(115.6); LineType = HwpLineType("None"); HSet.SetItem("ApplyClass", 868); HSet.SetItem("ApplyTo", 2); } HAction.Execute("MultiColumn", HParameterSet.HColDef.HSet); 이 매크로를 사용하기 위해서 hwp.HAction.GetDefault("MultiColumn", hwp.HParameterSet.HColDef.HSet) hwp.HParameterSet.HColDef.Type = hwp.ColDefType("Newspaper") hwp.HParameterSet.HColDef.CreateItemArray("WidthGap", 1) hwp.HParameterSet.HColDef.WidthGap.Item(0) = hwp.MiliToHwpUnit(115.6) hwp.HParameterSet.HColDef.HSet.SetItem("ApplyClass", 868) hwp.HParameterSet.HColDef.HSet.SetItem("ApplyTo", 2) hwp.HAction.Execute("MultiColumn", hwp.HParameterSet.hwp.HColDef.HSet) 이렇게 코드를 작성했는데요. 문제는 두번째 줄인 hwp.HParameterSet.HColDef.Type 이부분과네번째 줄 hwp.HParameterSet.HColDef.WidthGap.Item(0) 입니다. 두번째 줄을 실행했을 때 AttributeError: '<win32com.gen_py.HwpObject 1.0 Type Library.HColDef instance at 0x1617095373456>' object has no attribute 'Type' 이러한 에러메시지가 뜨고 네번째 줄은 hwp.HParameterSet.HColDef.WidthGap.Item(0) = hwp.MiliToHwpUnit(115.6)IndentationError: unexpected indent 이렇게 나오는데요.. 뭐가문제일까요? 늘 친절하고 자세하게 답변해주셔서 정말 감사합니다!
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
수식의 String을 변수에 저장
안녕하세요 일코님이번에 질문드릴 내용은선택된 영역의 수식의 String을 변수에 저장하고 싶어서 질문드립니다. 일전에 질문드린 내용에서hwp.get_selected_pos()를 사용하여 선택된 영역의 위치값을 알 수 있었는데요이 위치값 안에 위치한 수식의 String을 가져오고 싶어서 문의드립니다.123과 1/3은 수식으로 입력된 내용입니다.만약 선택된 내용을 hwp.get_selected_pos()로 받고math_string = '앞은 문자' + 123(123은 수식에서 가져온 'String')이런식으로 변수에 선언해주고 싶다면 어떻게 해야할까요..(문자와 수식이 혼합된 경우 동일한 순서로 값을 받는 방법이 있을지 궁금합니다.) selected_pos 안에 ctrl을 조회하는게 이전에 설명주신 내용에서는 전체 문서의 ctrl_list의 UserDesc를 조회를 하게되는 방식이였는데 선택된 내부의 ctrl만 조회하게 하는 방법은 없는지도 질문드립니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
현재 커서가 속한 페이지를 얻을 수 있는 방법
안녕하세요. 작업을 하다보니, 현재 커서가 속한 페이지를 얻어야 하는 경우가 있는데요. 관련강의로는 짝수페이지만 삭제하기 이쪽을 봤는데,전체페이지를 반환하는 것은 있는데,속한 페이지를 반환하게 하는 경우는 못찾겠습니다 ㅠ.ㅠ 관련 명령어가 있을까요 그리고 Hwp Ctrl API 도 자주 참조를 하시던데,제가 강의에서 받은 API는 ActionObjectHwpAutomationParameterSetObject이렇게 3개밖에 없어서요!혹시 다른 API파일들은 어디서 받을수있을까요?
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
폰트 설정 뒤 텍스트 입력이 안되는 문제
안녕하세요 일코님!글자속성 부분 강의를 들으면서, 매크로로도 확인해서 함수를 작성해보았는데요. 먼저 텍스트 입력 함수입니다.def 텍스트입력(text): hwp.HAction.GetDefault("InsertText", hwp.HParameterSet.HInsertText.HSet) hwp.HParameterSet.HInsertText.Text = text hwp.HAction.Execute("InsertText", hwp.HParameterSet.HInsertText.HSet) 그다음 폰트를 설정하는 함수입니다.def 폰트설정(글꼴,크기): hwp.HAction.GetDefault("CharShape", hwp.HParameterSet.HCharShape.HSet); hwp.HParameterSet.HCharShape.FaceNameUser = f"{글꼴}" hwp.HParameterSet.HCharShape.FontTypeUser = hwp.FontType("TTF") hwp.HParameterSet.HCharShape.FaceNameSymbol = f"{글꼴}" hwp.HParameterSet.HCharShape.FontTypeSymbol = hwp.FontType("TTF") hwp.HParameterSet.HCharShape.FaceNameOther = f"{글꼴}" hwp.HParameterSet.HCharShape.FontTypeOther = hwp.FontType("TTF") hwp.HParameterSet.HCharShape.FaceNameJapanese = f"{글꼴}" hwp.HParameterSet.HCharShape.FontTypeJapanese = hwp.FontType("TTF") hwp.HParameterSet.HCharShape.FaceNameHanja = f"{글꼴}" hwp.HParameterSet.HCharShape.FontTypeHanja = hwp.FontType("TTF") hwp.HParameterSet.HCharShape.FaceNameLatin = f"{글꼴}" hwp.HParameterSet.HCharShape.FontTypeLatin = hwp.FontType("TTF") hwp.HParameterSet.HCharShape.FaceNameHangul = f"{글꼴}" hwp.HParameterSet.HCharShape.FontTypeHangul = hwp.FontType("TTF") hwp.HParameterSet.HCharShape.Height = hwp.PointToHwpUnit(크기) hwp.HAction.Execute("CharShape", hwp.HParameterSet.HCharShape.HSet) 이렇게 하니까, 변경까지는 아주 잘 되는데, 변경후에 텍스트를 입력하면 커서만 깜빡이고 텍스트가 입력되질 않네요..매크로로 해서 그런가 싶어서, 다시 일코님이 작성해주신 코드를 복붙해서 사용해보았는데 charshape = hwp.XHwpDocuments.Item(0).XHwpCharacterShape charshape.Height = 5000 # 5000 HwpUnit = 50 pt charshape.Italic = True # 이탤릭 charshape.Bold = True # 진하게 charshape.ShapeNormal() # 글자크기와 서체를 제외한 모든 속성 초기화 이코드도 동일하게 적용까지는 되는데,, 텍스트가 입력이 되지 않네요.움짤로는 아래와 같습니다!
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
갑작스런 경로 문제로 질문드립니다..
안녕하세요 일코님.저번에 visible설정을 잘 알려주셔서 무척 도움을 받았습니다!다름이 아니고 원래는 제가 mac에서만 작업을 했는데요.이번에 hwp 강의를 구매하면서 삼성 노트북을 구매하여 쓰고있습니다. 그런데 이 시스템 환경변수가 매번 말썽입니다.vscode + anaconda + bash터미널을 쓰고있는데요. bash 터미널에 which conda 명령어를 입력하면$ which conda /c/Users/samsung-user/anaconda3/Scripts/conda 이렇게 잘 인식을 하고 있는데요. conda 명령어를 입력하면$ conda bash: C:\Users\samsung-usernaconda3\Scripts: No such file or directory samsung-user/anaconda3 로 인식되어야 하는데,samsung-useraconda3 로 이렇게인식이 되고 있네요.GPT랑 아무리 씨름을 해보아도 답이 안나오더라구요.GPT가 시킨것은 ~/.bashrc 파일과 ~/.bash_profile 파일을 수정하라는 것인데,각 파일은 아래와 같이 수정했습니다. ~/.bashrc ~/.bash_profile 시스템 환경 변수 설정도 아래와 같이 했는데요... 혹시 뭐가 문제가 있는걸까요??부탁드립니다 ㅠㅠㅠ 늘감사합니다!!
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
개체 참조가 개체의 인스턴스로 설정되지 않았습니다.
안녕하세요 일코님저번 답변으로 큰 도움을 얻었습니다. 감사합니다. 현재 제가 코드를 실행하면 아래와같은 경고메시지가 뜨는데..하나씩 실행해가면서 봤을떄는 문제가 없었는데 아래와 같은 문제가 왜 발생하는지 모르겠습니다. 어떨땐 뜨고, 어떨땐 안뜨는데, 도무지 알수가 없네요... 전체 코드를 첨부드립니다. import os from tkinter.filedialog import askopenfilename, askopenfilenames from pyhwpx import Hwp def 타겟인덱스찾기(target,학년): # FindReplace 설정 초기화 hwp.HAction.GetDefault("RepeatFind", hwp.HParameterSet.HFindReplace.HSet) hwp.HParameterSet.HFindReplace.FindString = f"{target[0]}년도 {target[1]:02}월 {학년} 학평 {target[2]:02}번" hwp.HParameterSet.HFindReplace.Direction = hwp.FindDir("Forward") hwp.HParameterSet.HFindReplace.FindType = 1 hwp.HParameterSet.HFindReplace.IgnoreMessage = 1 # 메시지 무시 설정 output = hwp.HAction.Execute("RepeatFind", hwp.HParameterSet.HFindReplace.HSet) if output == False: hwp.HAction.GetDefault("RepeatFind", hwp.HParameterSet.HFindReplace.HSet) hwp.HParameterSet.HFindReplace.FindString = f"{target[0]}년 {target[1]:02}월 {학년} 학평 {target[2]:02}번" hwp.HParameterSet.HFindReplace.Direction = hwp.FindDir("Forward") hwp.HParameterSet.HFindReplace.FindType = 1 hwp.HParameterSet.HFindReplace.IgnoreMessage = 1 # 메시지 무시 설정 return hwp.HAction.Execute("RepeatFind", hwp.HParameterSet.HFindReplace.HSet) else : return True def 워크북복수선택(): """ 선택한 모든 파일들의 전체경로를 가져오는 함수 """ filelist = askopenfilenames(title="문제를 추출할 아래아한글 문서를 모두 선택해주세요.", initialdir=os.getcwd(), filetypes=[("아래아한글파일", "*.hwp *.hwpx")]) return filelist # hwp = Hwp().hwp # 현재 열린 한글 실행 if __name__ == '__main__': hwp = Hwp(visible=True) 학년 = "고2" 타겟리스트 = [(21,11,30), (21,9,30), (20,6,3), (23,6,31), (22,11,31), (23,6,34) , (22,3,33), (21,6,33), (22,11,35), (22,6,35), (23,6,36) , (21,3,37), (20,9,38), (23,6,38), (21,9,39), (20,11,38), (22,9,40), (20,6,40), (23,9,30), (20,11,30) ] doc_1 = hwp.XHwpDocuments.Item(0) # output 문서 hwp.SetMessageBoxMode(0x20000) # 예,아니오 경고창은 노로 대답하기 워크북리스트 = 워크북복수선택() for 파일인덱스, 워크북 in enumerate(워크북리스트, start=1): doc_2 = hwp.XHwpDocuments.Add(False) # input문서 새로운 hwp열고 할당 (False=새로운창 / True = 기존hwp의 탭으로) hwp.Open(워크북) hwp.SetMessageBoxMode(0x20000) # 예,아니오 경고창은 노로 대답하기 doc_2.SetActive_XHwpDocument() # input문서 # Unit 추출하기 # '게시금지 ' 로 검색 hwp.HAction.GetDefault("RepeatFind", hwp.HParameterSet.HFindReplace.HSet) hwp.HParameterSet.HFindReplace.FindString = "게시금지 " hwp.HParameterSet.HFindReplace.Direction = hwp.FindDir("Forward") hwp.HParameterSet.HFindReplace.FindType = 1 hwp.HParameterSet.HFindReplace.IgnoreMessage = 1 # 메시지 무시 설정 hwp.HAction.Execute("RepeatFind", hwp.HParameterSet.HFindReplace.HSet) hwp.HAction.Run("Cancel") # Unit 칸으로 이동하여 복사하기 hwp.HAction.Run("MoveParaEnd") hwp.HAction.Run("MoveRight") hwp.HAction.Run("MoveSelParaEnd") # 현재 문단의 끝까지 블록 설정 hwp.HAction.Run("Copy") # 블록 설정된 텍스트를 클립보드로 복사 hwp.HAction.Run("Cancel") doc_1.SetActive_XHwpDocument() # output 문서 활성화 # 복사한 텍스트를 문서에 입력 if 파일인덱스 != 1 : hwp.HAction.Run("MoveDocEnd") hwp.HAction.Run("BreakPage") hwp.HAction.Run("Paste") hwp.HAction.Run("MoveSelLineBegin") for _ in range(10): hwp.HAction.Run("CharShapeHeightIncrease") # 텍스트 크기 증가 hwp.HAction.Run("Cancel") hwp.HAction.Run("MoveParaEnd") hwp.HAction.GetDefault("PageSetup", hwp.HParameterSet.HSecDef.HSet) hwp.HParameterSet.HSecDef.PageDef.Landscape = 1 hwp.HParameterSet.HSecDef.PageDef.BottomMargin = 0 hwp.HParameterSet.HSecDef.HSet.SetItem("ApplyClass", 28) hwp.HParameterSet.HSecDef.HSet.SetItem("ApplyTo", 2) hwp.HAction.Execute("PageSetup", hwp.HParameterSet.HSecDef.HSet) doc_2.SetActive_XHwpDocument() # input 활성화 for 인덱스,타겟튜플 in enumerate(타겟리스트, start=1) : hwp.HAction.Run("MoveDocBegin") # 타겟 찾아서 쪽 복사하기 if 타겟인덱스찾기(타겟튜플,학년): hwp.HAction.Run("CopyPage") # 두번째 문서 활성화 하고 쪽 붙여넣기 doc_1.SetActive_XHwpDocument() # output 문서 활성화 hwp.HAction.Run("MoveDocEnd") hwp.HAction.Run("BreakPage") hwp.HAction.Run("PastePage") if 인덱스 > 1: hwp.SetMessageBoxMode(0x20) hwp.HAction.Run("MovePrevParaEnd") hwp.HAction.Run("Delete") hwp.HAction.Run("Delete") hwp.HAction.Run("MoveDocEnd") doc_2.SetActive_XHwpDocument() # input 문서 활성화 현재경로 = doc_2.FullName doc_2.Close(False) #TRUE : 내용이 변경된 경우 닫지 않음, FALSE : 강제로 닫음 hwp.SetMessageBoxMode(0xF0000) # 경고창이 기본모드로 바뀜 hwp.SetMessageBoxMode(0xF0) 현재디렉토리 = os.path.dirname(현재경로) 파일이름 = "상세분석_작업완료.hwp" 저장경로 = os.path.join(현재디렉토리, 파일이름) doc_1.SaveAs(저장경로) hwp.Quit() 한두개를 작업할떄는 문제가 없었는데 여러개를 작업하니까 문제가 생기네요..ㅠㅠ너무 큰 질문을 드리는것 같아 죄송하고 감사한 마음입니다..늘 강의 잘 보고있고 업무에 큰도움 받고있습니다 정말 감사합니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
페이지 가로로 돌리기 매크로녹화 스크립트 미작동
문서 두개를 띄워서 작업을 하려고 하는데요. 먼저 한글시작을 하구 hwp = 한글시작(True) def 한글시작(TF): hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = TF hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule") return hwp 그다음 아래와같이 코드를 작성했는데요. hwp = 한글시작(True) doc_2 = hwp.XHwpDocuments.Add(False) # 새로운 hwp열고 할당 (False=새로운창 / True = 기존hwp의 탭으로) doc_2.SetActive_XHwpDocument() # 두 번째 문서 활성화 hwp.HAction.GetDefault("PageSetup", hwp.HParameterSet.HSecDef.HSet) hwp.HParameterSet.HSecDef.PageDef.Landscape = 1 hwp.HParameterSet.HSecDef.HSet.SetItem("ApplyClass", 24) hwp.HParameterSet.HSecDef.HSet.SetItem("ApplyTo", 3) hwp.HAction.Execute("PageSetup", hwp.HParameterSet.HSecDef.HSet)XHwpDocumnets.Add 를 통해서 새로운 hwp를 열었고, 활성화도 했습니다.그이후에 한글을 직접 작동하여, 페이지를 가로로 돌리는것(편집용지->가로)을 매크로 녹화했는데요아래 부분을 입력하고 실행했을 때, hwp.HAction.GetDefault("PageSetup", hwp.HParameterSet.HSecDef.HSet) FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\SAMSUN~1\\AppData\\Local\\Temp\\gen_py\\3.12\\7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBCx0x1x0\\HSecDef.py.18740.temp' 이런 오류 메시지가 터미널에 뜨게됩니다.반면에, hwp.HAction.Run("MoveParaEnd")등을 실행했을 떄는 모두 정상적으로 작동합니다. 왜 한글매크로를 녹화한것이 제대로 작동하지 않는걸까요? 잘 알려주셔서 정말 감사합니다
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
탭 선택 관련 문의 입니다.
특정 탭에 진입할 수 있어야 합니다.이렇게 초반에 탭이 3개가 있는 프로세스가 있는 경우현재는 test2라는 탭이 활성화 되어있습니다.저는 test라는 탭을 편집하여야하는데test2를 종료 하더라도 test 탭으로 정확히 이동이 안되는데혹여 특정 탭에 접근이 가능한 방법이 있을까요?우선 현재 띄워져 있는 창의 탭 이름을 가져오는 것에는 성공을 하였습니다. from pyhwpx import Hwp hwp = Hwp() documents = hwp.XHwpDocuments for i in range(documents.Count): doc = documents.Item(i) doc_name = doc.FullName if doc.FullName else "저장되지 않은 문서" print(f"문서 {i}: {doc_name}") if 'test.hwpx' in doc_name: selected_doc = doc selected_num = i break if 'selected_doc' in locals(): # 해당하는 문서가 탭에 존재하면 해당 문서를 편집할 수 있게 선택 만약 탭이름을 활용해서 선택하는 방법이 없다면hwp.Run("WindowNextTab")을 통하여 현재 탭의 이름과 하나하나 비교하여 일치하는 경우까지 이동하게 하는 방식이 나을지 아니면 탭에 접근하는 방법이 있을지 질문드립니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
가상환경에서 import error 질문드립니다.
우선 매번 질문에 관한 답변 정말 감사드립니다.venv 가상환경에서 win32에 관한 문구가 종종 등장해서 질문드립니다.해서 찾아보니 이전에도 비슷한 글이 올라와 있어서https://employeecoding.tistory.com/183해당 내용을 따라 했을 때 1번은 일시적인 해결이 되지만재시작하면 다시 import error를 리턴하더군요 그래서 3번을 적용해보았습니다.하지만 .venv 내부에서 실행해서 그런지 pythonwin.exe가 가상환경 내의 것은 실행되지 않아서 에러를 일으키는것 같습니다.[.venv 내의 pythonwin.exe 실행시 사진]물론 가상환경(venv)이 아닌 Local에서는실행이 되긴 하지만Local과 venv는 독립된 공간이라 그런지3번을 Local에 적용하여도 가상환경에서 실행한다면 같은 문제를 일으킵니다. 언제나 감사드립니다!
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
pyhwpx 관련 질문있습니다.
질문 남겨주셔서 감사합니다.막히면 언제든 무엇이든 자주 질문 던져주세요.수학/과학이나 알고리즘과는 달리업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다.다시 말씀드리지만, 질문을 자주자주 남겨주세요.저도 최대한 빠르게 회신 드리겠습니다.당부드릴 두 가지가 있습니다.① 가급적 구체적으로 설명해주세요.② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ==================================== 최근 pyhwpx 관련으로 구현해두셨다고 하셨는데블로그를 통해 활용하는 법을 정리하신다고 알고 있습니다만어떤 함수가 있는지 조금 헤매이고 있어요그래서 생각해보건데대부분의 표기법을 파스칼케이스(ex) PutFieldText)에서스네이크 케이스(put_field_text()) 로 변경하신건지 아니면 특정 함수만 스네이크 케이스로 만들어두신건지 질문 드립니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
한셀은 어떻게 하죠?
강의 챕터 : [응용] 엑셀문서 값을 필드에 입력하기질문사항 : 저희 회사에서는 엑셀을 사용하지 않고 한셀을 사용하도록 하는데 그 때는 어떻게 하나요?
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
섹션0 마지막강의 질문입니다.
강의명 : [꿀팁] 기존에 열려있는 한/글 프로그램을 파이썬으로 제어하기질문사항 : 1) '파이썬으로 기존 열린 한/글 프로그램을 제어하는 코드입니다.' 이렇게 설명이 되어있는데 저의 컴퓨터에 설치된 한글프로그램 폴더에는 이렇게 되어있는데 프로그램을 다시 설치해야하는 건가요? 2) 그리고 올려주신 코딩은 어디에서 어떻게 사용하는거에요? 움짤을 보니까 파이참에 복사해서 붙여넣기 해서 사용하는 것 같은데 따라하려고 해도 잘 모르겠어요. 간단하게라도 어떤 상황에서 어떤 목적으로 사용하는건지 부탁드려요.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
파일을 복사하는 코딩을 복사해서 붙여넣기 했는데 잘 모르겠어요.
강의챕터 : '한/글 파일을 불러올 때마다 뜨는 팝업, 안 뜨게 할 수 없을까요?'질문사항 : 선생님~ 두번째 예제 내용에서 요걸 복사해서 파이참에 붙여넣기 한 다음에 실행해보니까 안되는 것 같은데 뭐가 잘못된걸까요? (혹시 1.hwp 파일이 있는 장소를 추가로 지정해줘야하는건가요?) 그리고 cmd 창에 위 내용을 그대로 복사해서 넣고 엔터를 치니까 이렇게 표시되면서 파일이 생기는 것 같은데 표시만 되는건가요? 아님 위의 질문처럼 임의의 저정장소를 넣어줘야하는건가요?