AutoIT MS워드 자동화

전에 AutoIT을 통한 자동화에 대한 글을 쓴적이 있는데, 얼마전에 자동화할때 MS워드에서 정보를 추출할 일이 있어서 AutoIT에 포함된 워드 모듈을 써볼 기회가 있었습니다. AutoIT에서 제공하는 워드 함수에 대한 문서만으로는 자동화하기는 부족하더군요. MSDN을 참고해서 워드의 객체 모델을 어느정도 이해하시고 Range 객초 참고하시면 큰 도움이 될듯합니다. MSDN이 Visual Basic 위주로 되어 있지만, 문법은 동일하게 쓰면 됩니다.

아래 예제 보시면 어느정도 감이 오실듯하네요.

#include <word.au3>

; 화면에 보이지 않고 포커스 안가져가도록 인자 전달
$oWordApp = _WordCreate(“”, 0, 0, 0)

; test.doc 문서 열기
$doc = _WordDocOpen($oWordApp, “test.doc”)

; 문단 객체 가져오기
$paragraph = $doc.Paragraphs
 
; 첫번째 문단 텍스트 가져오기 (텍스트만)
$paragraph1text = $paragraph(1).Range.Text

; 두번째 문단 클리보드에 복사 (포맷,링크,그림등 포함)
$paragraph(2).Range.Copy

; 세번째 문단부터 끝까지 클립보드에 복사
$doc.Range($paragraph(3).Range.Start).Copy

; 세번째 문단부터 다섯번째 문단까지 텍스트 가져오기

$paragraph3to5text = $doc.Range($paragraph(3).Range.Start, $paragraph(5).Range.End).Text

; 문서내 모든 링크 가져와서 출력하고 다른 주소로 변경
For $hyper in $doc.HyperLinks
    ConsoleWrite(“link=” & $hyper.Address & @CRLF) ; 링크 출력
    $hyper.Address = “http://mix1009.net” ; 모든 링크 바꾸기 —
Next

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>