개발자로 근무를 하다보니 개발 문서를 만드는 경우가 많고 회사에서는 마이크로소프트 오피스 제품을 사용하여 문서를 작성하는 경우가 많습니다. 물론 경우에 따라서 정부 과제를 하는 경우에는 한글 프로그램을 사용하여 문서 작성을 하는 경우도 있지만 지금까지 회사 생활을 하면서 특별한 경우가 아닌 이상 한글 프로그램을 사용한 경우는 별로 없었습니다.

마이크로소프트 오피스 제품을 사용 하다 보니 생산성 향상을 위하여 VBA 를 사용한 매크로에 관심을 가지게 되었고~ 매크로를 사용하지 않는 사람들에 비해 엄청난 시간 절약을 할 수 있었다고 생각합니다.

최근 4차 산업혁명 시대가 되고 있고 저는 개인적으로 4차 산업혁명 시대는 극단적인 생산성 향상의 시대라고 생각합니다. 결과를 만들어내는 것은 누구나 할 수 있지만 똑같은 결과를 정확하고 특히나 빠르게 만드는 것은 누구나 할 수 없는 개인의 경쟁력이 될 것으로 예상됩니다. 이런 시대에 자동화 기술을 갖추고 있는 것과 그렇지 못한 것은 분명 차이가 될 것입니다.

개발 문서에서는 표가 굉장히 많이 들어가게 되는데~ 문서를 조금 더 보기 좋게 만들기 위하여 대부분의 표는 “창에 자동으로 맞춤”으로 설정하곤 합니다. 그런데 이런 표가 문서에 엄청나게 많이 들어가다보니 하나하나 표에서 오른쪽 클릭하여 자동 맞춤 -> 창에 자동으로 맞춤을 눌러주는 것은 매우 비효율적일 것입니다.

이럴 때 사용하라고 만들어진 것이 Microsoft Word VBA 이고~ 아래와 같이 간단한 코드로 현재 워드파일에 있는 모든 표를 “창에 자동으로 맞춤” 으로 설정할 수 있습니다.

Sub makeTableAutomaticallyFitInWindow()

Dim oShp As Table

For Each oShp In ActiveDocument.Tables

oShp.AutoFitBehavior wdAutoFitWindow

Next

End Sub

“창에 자동으로 맞춤” 에 대한 MSDN 페이지는 아래와 같고 추가적인 설명들이 나와 있습니다. 위 코드는 문서에서 표를 For 문을 통해 돌면서 “창에 자동으로 맞춤” 을 설정해 주는 것입니다. 아래 MSDN 페이지를 보면 “내용에 자동으로 맞춤”은 wdAutoFitContent, “고정 열 너비“ 는 wdAutoFitFixed 로 설정 하면 되는 것을 확인할 수 있습니다.

https://docs.microsoft.com/en-us/office/vba/api/word.table.autofitbehavior

위 VBA 코드는 Alt + F11 을 눌러서 아래와 같이 normal 의 ThisDocument 나 모듈의 NewMacros 에 저장하고 사용하시면 됩니다. 

워드 설정 파일인 Normal.dotm 에 대해서는 아래 포스팅을 확인해 보시기 바랍니다.

http://iamaman.tistory.com/1173

위 매크로를 실행하기 위해서는 아래와 같이 Microsoft Word 에서 보기 메뉴의 매크로 보기 또는 단축키로 Alt + F8 을 눌러주면 저장된 매크로가 보이게 되고~

저장된 매크로 중에서 위해서 만든 makeTableAutomaticallyFitInWindow() 를 선택한 후에 실행하시면 됩니다.

위 코드를 실행하면 아래와 같이 문서 내 모든 표가 “창에 자동으로 맞춤” 으로 설정 되는 것을 확인할 수 있습니다.

표가 한 두 개 라면 수동으로 하는 것도 그리 오래 걸리지 않겠지만 열 개만 넘어가도 매크로를 사용하는 것이 훨씬 더 효율적일 것입니다.



아래 포스팅에서 Perl 과 Autohotkey 를 사용한 Ms Word 자동화에 대해 소개한 적이 있는데요.

 

http://iamaman.tistory.com/335


http://iamaman.tistory.com/458


오늘은 요즘 제가 종종 사용하는 python 을 사용한 ms word 자동화에 대해 간단히 소개하려 합니다.

 

뭐 다른 사람에게 소개한다는 측면보다는 제가 기억하기 위한 용도로 적어 놓는거니 그리 자세하지는 않습니다.

 

일단 python 에서 ms word 문서를 만들기 위해서는 아래 주소에서 pywin32 모듈을 설치해야 합니다.

 

http://sourceforge.net/projects/pywin32/files/pywin32/

 

다음으로 아래 주소의 예제들을 참조하여~

 

http://www.blog.pythonlibrary.org/2010/07/16/python-and-microsoft-office-using-pywin32/

 

http://win32com.goermezer.de/content/view/173/192/

 

 

간단하게 python으로 코딩을 해보죠~

 

다음은 간단히 파일 저장하는 코드 입니다

 

import win32com.client

 

wordapp = win32com.client.Dispatch("Word.Application") # Create new Word Object

wordapp.Visible = 0 # Word Application should`t be visible

worddoc = wordapp.Documents.Add() # Create new Document Object

worddoc.PageSetup.Orientation = 1 # Make some Setup to the Document:

worddoc.PageSetup.LeftMargin = 20

worddoc.PageSetup.TopMargin = 20

worddoc.PageSetup.BottomMargin = 20

worddoc.PageSetup.RightMargin = 20

worddoc.Content.Font.Size = 11

worddoc.Content.Paragraphs.TabStops.Add (100)

worddoc.Content.Text = "Hello, I am a text!"

worddoc.Content.MoveEnd

worddoc.SaveAs("C:/test.docx")

worddoc.Close() # Close the Word Document (a save-Dialog pops up)

wordapp.Quit() # Close the Word Application

 

위 코드를 실행해 보면 C:\test.docx 에 다음과 같은 문서가 생성됨을 확인 할 수 있습니다.

 

 

아래는 MSDN 에 나와 있는 저장형식들 입니다.

 

http://msdn.microsoft.com/en-us/library/bb238158%28v=office.12%29.aspx

 

Openoffice automation 에 대한 글도 있어서 링크 합니다.

 

http://stackoverflow.com/questions/1035183/how-can-i-create-a-word-document-using-python

 

Ms Word 를 포함하여 다양한 예제가 나와 있는 주소

 

http://win32com.goermezer.de/content/category/7/86/192/

 

+ Recent posts