해결된 질문
작성
·
1.3K
답변 2
2
제가 가장 자주 사용하는 방법은 두 가지인데,
①쪽 복사/쪽 붙이기 또는 ②문서 끼워넣기(Ctrl-O)입니다.
버전과 상관없이 잘 동작하는 방법은 문서 끼워넣기이므로
문서끼워넣기에 대해 간략히 설명드리겠습니다.
A문서는 아래와 같고
B문서는 아래와 같을 때
A문서를 열어둔 상태에서 문서를 삽입하고자 하는 곳에 커서를 옮긴 후
문서끼워넣기를 실행하시면 아래와 같은 과정으로 문서가 끼워넣어집니다.
이 때 보시는 바와 같이 글자모양, 문단모양, 스타일 및 쪽 모양 등을 유지할 수 있는
옵션이 있으므로, 필요시 체크하시면 됩니다.
또한 이 액션은 스크립트매크로, 또는 파이썬으로도 실행 가능합니다.
def 문서끼워넣기(file):
hwp.HAction.GetDefault("InsertFile", hwp.HParameterSet.HInsertFile.HSet)
hwp.HParameterSet.HInsertFile.KeepSection = 1
hwp.HParameterSet.HInsertFile.KeepCharshape = 1
hwp.HParameterSet.HInsertFile.KeepParashape = 1
hwp.HParameterSet.HInsertFile.KeepStyle = 1
hwp.HParameterSet.HInsertFile.filename = file
return hwp.HAction.Execute("InsertFile", hwp.HParameterSet.HInsertFile.HSet)
혹, 한/글 2014 이상의 버전을 사용하고 계신다면
문서B 1페이지부터 차례대로 hwp.Run("CopyPage") 명령 후
문서A 에서 hwp.Run("PastePage")로 쪽붙이기를 하시면
문서서식이나 배경, 스타일 등이 유지된 채로 페이지가 붙여넣기 됩니다.
단, 한 페이지씩만 붙이기가 되므로 while문이나 for문을 적절히 사용하셔야 합니다^^
도움이 되었길 바랍니다.
행복한 하루 되세요ㅋ
1
텍스트나 컨트롤을 부분적으로 복사붙여넣기하는 몇 가지 방법이 있는데,
그 중 가장 쉬운 방법은 역시 Copy&Paste입니다.
문서 A에서 원하는 부분을 선택하신 후에 hwp.Run("Copy")를 실행하시고,
문서 B에서 붙여넣고자 하는 부분으로 커서를 옮긴 후에 hwp.Run("Paste")를 실행하시면 됩니다.
문서A = hwp.XHwpDocuments.Item(0)
문서B = hwp.XHwpDocuments.Item(1)
문서A.SetActive_XHwpDocument() # 문서A 활성화
hwp.SetPos(2, 3, 0) # 표 내부 "A문서입니다" 시작부분
hwp.Run("MoveSelParaEnd") # 해당문단 끝까지
hwp.Run("Copy") # 클립보드 복사
문서B.SetActive_XHwpDocument() # 문서B 활성화
hwp.SetPos(2, 2, -1) # 반갑습니다. 끝부분에 커서 놓고
hwp.Run("Paste") # 클립보드 붙여넣기
(이미지 우클릭 후 "새 탭에서 이미지 열기"를 클릭하시면 큰 이미지로 보실 수 있습니다.)
참고로 클립보드의 내용 중 텍스트 일부를 변경하여 붙여넣고자 하신다면
파이썬의 pyperclip 모듈을 활용하시면 됩니다. (다만, 서식은 유지되지 않습니다.)
서식을 유지하시려면 복사할 본문의 텍스트를 수정한 후 hwp.Run("Copy")를 실행하셔야 합니다.
import pyperclip as cb
문서A = hwp.XHwpDocuments.Item(0)
문서B = hwp.XHwpDocuments.Item(1)
문서A.SetActive_XHwpDocument() # 문서A 활성화
hwp.SetPos(2, 3, 0) # 표 내부 "A문서입니다" 시작부분
hwp.Run("MoveSelParaEnd") # 해당문단 끝까지
hwp.Run("Copy") # 클립보드 복사
cb.copy(cb.paste().replace(".", "!"))
문서B.SetActive_XHwpDocument() # 문서B 활성화
hwp.SetPos(2, 2, -1) # 반갑습니다. 끝부분에 커서 놓고
hwp.Run("BreakPara")
hwp.Run("Paste") # 클립보드 붙여넣기
위 코드는 다소 생소하실 수 있습니다.
개인적으로는 특정 부분을 클립보드로 복사해서 다른 문서의 특정 위치에 붙여넣는 기능은
활용해본 적이 손에 꼽을 만큼 적습니다.
코드는 전부 보여드렸지만,
복사할 문서의 텍스트 위치가 고정적이라면
누름틀 등 가급적 다른 방법으로 자동화할 수 있는 대안을 찾아보실 것을 권장드립니다^^;
도움이 되었길 바랍니다.
행복한 하루 되세요^^
친절한 설명 감사드립니다.
한가지 더 여쭤봅니다. 전체 페이지나 문서 전체외에 문서의 일부 내용을 다른 문서로 옮기는 방법은 있는지요?
파이썬에서 문서를 A, B를 열고 A에서 일부 카피한 텍스트나 개체 등을 B로 옮기는 방법입니다.