(pywin32)에서 Word 작업하기 [3] - 새 문서 만들기

개요



새 문서를 만듭니다.
다음 번에는 문자를 씁니다.

이번에 이용하는 Word 오브젝트





전회까지 소개한 메소드/프로퍼티는 생략.


객체 이름
속성/메소드
설명
링크


응용
-
Word 앱을 나타내는 개체
msdn

ActiveDocument
작업 중인 문서(Document)
msdn

Documents
-
Document 컬렉션
msdn

카운트
컬렉션의 개체 수
msdn

Add()
새 문서 작성
msdn

문서
-
문서의 한 문서
msdn

이름
파일 이름 만 1

msdn 2


Activate()
작업중인 문서로 만듭니다 3

msdn


ActiveDocument 속성은 작업 중인 문서(Active Document)라면 Application→Documents→Document를 따르지 않아도 Document에 액세스할 수 있음을 나타냅니다.



코드



이후는 코드(라고 하는지, qtconsole의 확인 결과)를 나타내 갑니다만, 전회의 기동 종료와 같은 템플리적인 처리는 생략합니다. ↓의 「★어떤 것의 처리★」 부분에 기술하고 있는 이미지로 읽어 주세요.
import win32com.client
#Wordを起動する : Applicationオブジェクトを生成する
Application=win32com.client.Dispatch("Word.Application")
#Wordを画面表示する : VisibleプロパティをTrueにする
Application.Visible=True
なんらかの処理
#Wordを終了する : Quitメソッドを呼ぶ
Application.Quit()

Word 컬렉션 정보



Word 컬렉션의 각 요소에는 Documents(1), Documents(2), ...와 괄호로 액세스합니다. 다음에 주의가 필요합니다.
  • 대괄호가 아닌 것
  • n은 1에서 시작합니다
  • Add (), Close () 등의 호출이나 GUI 조작 (e.g.window의 클로우즈 조작)으로 컬렉션의 위치가 바뀐다

  • 순차 액세스는 반복하는 것이 압도적으로 빠릅니다.

  • 새 문서 작성



    Application.Documents.Add()를 호출하면 Documents에 새 Document가 추가되고 반환 값으로 추가된 Document에 대한 참조가 반환됩니다.
    또한 Application.ActiveDocument가 가리키는 대상도 추가된 Document가 되어 있습니다.
    # Documentオブジェクトの個数を確認
    In [79]: Application.Documents.Count
    Out[79]: 0 # Documentオブジェクトは0個
    #Add()する。追加したDocumentの参照が返ってくるのでdocで受け取っておく。
    In [80]: doc=Application.Documents.Add()
    # Documentオブジェクトの個数を確認
    In [81]: Application.Documents.Count
    Out[81]: 1 # 1個追加されている。
    # Nameを3つの方法で確認する。
    In [82]: doc.Name
    Out[82]: '文書 1'
    In [83]: Application.ActiveDocument.Name
    Out[83]: '文書 1'
    In [84]: Application.Documents(1).Name
    Out[84]: '文書 1'
    

    Add() 호출은 Application.ActiveDocument 및 Application.Documents(n)의 참조 대상을 변경합니다. 변수로 참조를 받아 두고, 사용하는 것이 좋다고 생각합니다.
    #doc2で2個目の参照を受け取っておく
    In [85]: doc2=Application.Documents.Add()
    # Nameを3つの方法で確認する。
    In [86]: doc2.Name
    Out[86]: '文書 2'
    In [87]: Application.ActiveDocument.Name
    Out[87]: '文書 2' # Add()の呼び出しで追加されたものがActiveDocumentになる
    In [88]: Application.Documents(1).Name
    Out[88]: '文書 2' # Add()の呼び出しでDocuments(1)が指しているものも変わってしまう!!!
    In [89]: Application.Documents(2).Name
    Out[89]: '文書 1' # Documents(2)に移動している。
    # docで保持しておいた参照は変わらない
    In [90]: doc.Name
    Out[90]: '文書 1'
    # Activate()を呼び出すと、
    In [91]: doc.Activate()
    In [92]: Application.ActiveDocument.Name
    Out[92]: '文書 1' # ActiveDocumentになる
    # Documents(1)、Documents(2)は変化なし
    In [93]: Application.Documents(1).Name
    Out[93]: '文書 2'
    In [94]: Application.Documents(2).Name
    Out[94]: '文書 1'
    

    관련



    Python(pywin32)에서 Word 작업하기 [1] - Word 객체 모델
    Python(pywin32)에서 Word 작업하기 [2] - Word 시작/종료
    Python(pywin32)에서 Word 작업하기 [3] - 새 문서 만들기
    Python(pywin32)에서 Word 작업하기 [4] - 문자열 입력/취득/삭제
    Python(pywin32)에서 Word 작업하기 [5] - 문서를 파일에 저장, Word 옵션 변경
    Python(pywin32)에서 Word 작업하기 [6] - 특정 제목이 있는 창 작업
    Python(pywin32)에서 Word 작업하기 [7] - 기존 문서 열기/닫기(Documents.Open(), Document.Close())
    Python(pywin32)에서 Word 조작하기 [8] - 단락 단위의 문자열 취득, 통계 (페이지 수, 단락 수, etc) 취득

    참고


  • 개체 모델 - MSDN
  • PyWin32 Documentation - Tim Golden's Stuff
  • VOV (VBA, OLE, VBScript)를 통한 자동 조작 - 스크립트 기반 프로그래밍 언어 팬의 담배
  • COM(Component Object Model)에 대해 살짝 학습해 나가는 그 1 도입편 - Qiita
  • VBScript로 Word 파일 페이지 수 목록 만들기 - Segmentation Fault
  • Office Space Microsoft Word 문서에서 텍스트 찾기 및 바꾸기
  • 모두의 단어 매크로



  • 주석의 기계 번역이 끔찍하기 때문에 msdn_en-us의 Remarks를 보는 것이 좋습니다.

    msdn은 왜 Bookmark.Name 예제를 작성했습니다. (제목은 Document.Name이지만)

    스크립트에서 작업 중(Active)의 개념이 필요할 때는 무엇일까. (GUI 작업이라면 알 수 있지만)

    좋은 웹페이지 즐겨찾기