직장에서 기술문서 등을 작성할 때 Microsoft Word 제품을 많이들 사용하실 텐데~ 회사마다 고유의 스타일 서식이나 폰트를 지정해놓고 사용하는 경우가 많이 있습니다. 이러한 경우에 새로운 문서를 작성할 때마다 서식을 반복해서 설정하는 것은 미련한 짓이라고 생각합니다. 서식은 한 번만 만들어 놓고 새로운 문서를 작성 할 때마다 저장해 놓은 서식이나 매크로를 불러들여서 사용한다면 훨씬 더 편리 할 것입니다.

오늘은 Microsoft Word 에서 서식을 저장하고 해당 서식을 적용하는 방법에 대해서 소개하려 합니다.

일단 Microsoft Word 에서 원하는 서식으로 문서를 작성한 후에 해당 문서를 서식으로 재 사용하고 싶은 경우, 다른 이름으로 저장 -> 찾아보기 에서 파일 형식을 “word 서식 파일(확장자 dotx)” 로 저장하면 되고 매크로가 포함된 서식 파일을 저장하는 경우에는 “word 매크로 사용 서식 파일(확장자 dotm)”로 저장하면 됩니다.

저는 현재 Microsoft Office 2013 버전을 사용하고 있는데 Microsoft Word 서식 파일은 Windows 10 의 경우 아래 주소에 저장됩니다. 만약 다른 사람들에게 양식 파일을 새로 받는 경우에도 마찬가지로 아래 주소에 서식 파일을 넣어주어야만 Microsoft Word 프로그램에서 정상적으로 서식을 인식 할 수 있습니다.

D:\Documents\사용자 지정 Office 서식 파일

만들어진 서식을 적용하여 새로 파일을 만드는 경우에는 아래와 같이 새로 만들기 -> 개인 부분을 클릭하고 들어가 보면~ 위에서 만든 서식 파일을 선택해서 문서를 시작 할 수 있습니다.



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

마이크로소프트 오피스 제품을 사용 하다 보니 생산성 향상을 위하여 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() 를 선택한 후에 실행하시면 됩니다.

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

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



아래 포스팅에서 Autohotkey 에서 Windows COM(Component Object Model) 을 사용한 사례에 대해서 소개를 한 적이 있습니다. Windows 컴퓨터 사용시 많이들 사용하는 Microsoft Office 제품을 사용할 때도 COM 을 사용하여 자동화를 할 수가 있습니다.

http://iamaman.tistory.com/1879

http://iamaman.tistory.com/461

http://iamaman.tistory.com/2001

http://iamaman.tistory.com/2021

Autohotkey 에서 COM 을 사용하기 위해서는 아래 메뉴얼 같이 COM object 를 만들어야 합니다.

https://autohotkey.com/docs/commands/ComObjCreate.htm

ComObjCreate의 입력값으로 CLSID 를 넣어줘야 하는데 CLSID 는 우리가 사용하고자 하는 COM 의 Program ID 입니다.

ComObject := ComObjCreate(CLSID [, IID])

탐색기 정보 등을 자동화 하고 싶으면 Shell.Application, Microsoft Word 를 자동화하고 싶으면 Word.application, Microsoft Powerpoint 를 자동화 하고 싶으면 PowerPoint.Application 을 넣어야 하는 식입니다.

COM 을 사용하기 위해서는 당연히 우리 컴퓨터에 사용할 수 있는 COM 이 어떤게 설치가 되어 있는지를 알아야 합니다. Microsoft Office 제품과 같이 우리가 설치한 경우에는 당연히 알 수 있겠지만 다른 프로그램들 같은 경우에는 어떤 이름을 사용해야 COM 을 사용할 수 있는 건지 잘 모르는 경우가 많습니다.

그래서 오늘은 Powershell 을 사용하여 우리 컴퓨터에 설치되어 있는 COM 을 검색하는 방법에 대해서 소개하려합니다. 해당 코드는 Powershell 코드이며 ‘개발자를 위한 Powershell’ 책의 예제에 있습니다.

책의 전체 소스 코드들은 아래 주소에서 다운로드 받을 수 있습니다.

https://github.com/dfinke/powershell-for-developers

그리고 아래 주소의 GetProgID 함수를 사용하면 우리 컴퓨터에 설치되어 있는 COM 을 검색할 수 있습니다.

https://github.com/dfinke/powershell-for-developers/blob/master/chapter10/GetProgID.ps1

Powershell 에서 다음과 같이 ps1 파일을 실행하면 되는데…..

.\GetProgID.ps1

내 컴퓨터에 몇 개의 COM 이 설치되어 있는지 확인을 해보려면 다음과 같이 명령어를 치면 됩니다. 제 컴퓨터에는 1800개 COM 이 있네요.

.\GetProgID.ps1 | measure


1800 개를 눈으로 확인하는 건 조금 불편 하니까 키워드로 검색하는 것이 좋습니다. 다음과 같이 word 를 검색해보면 Word.Application 뿐만 아니라 내가 잘 알지도 못하는 다양한 COM 들이 설치 되어 있다는 것을 알 수가 있습니다. 검색 되는 목록 중에서 Word.Application 을 사용 하면 되는 것이죠.

.\GetProgID.ps1 word


이베스트 xingAPI를 사용해서 시스템 트레이딩을 하시는 분들은 다음과 같이 검색해보시면 COM 이 나오는 것을 확인 하실수 있습니다. xingAPI 를 설치했으므로 검색이 되는 건 당연하겠죠.

.\GetProgID.ps1 XA_DataSet

.\GetProgID.ps1 XA_Session


저는 개인적으로 요즘 이베스트 xingAPI를 통해서 시스템 트레이딩을 조금씩 공부 해 보고 있는데, 컴퓨터 언어는 주로 파이썬을 사용하고 있습니다. 생각해보니 Autohotkey 나 Powershell 을 사용해서도 시스템 트레이딩이 가능할것도 같네요.



티스토리 블로그는 블로그 API를 통해서 글을 작성할 수 있었습니다. 블로그 APIMicrosoft Word 와 같은 외부 편집기 프로그램을 통해서 티스토리에 글을 게시하고 수정할 수 있는 API 입니다. 그런데 보안에 취약한 문제 등으로 2016 12월에 지원을 종료하였습니다. 대신에 오픈 API는 계속 사용할 수가 있습니다.

http://notice.tistory.com/2359

저는 아래 주소의 로또 관련 포스팅을 매주 자동으로 생성하고 있습니다. 로또 결과 발표가 나면 단순한 형태의 크롤링을 통해 로또 당첨번호를 가져오고~ 계속해서 안 나오고 있는 숫자들을 자동으로 찾습니다.

http://iamaman.tistory.com/category/%EB%A1%9C%EB%98%90

이후 포스팅할 로또 HTML 페이지를 생성 한 다음 티스토리 오픈 API를 통해서 로또 포스팅을 업로드 하고 있습니다.

http://www.tistory.com/guide/api/post

그런데 오픈 API 사용 실력이 딸리다 보니 텍스트 업로드는 알겠는데 파일 업로드는 잘 모르겠더군요. 매주 로또 파일이 업로드 되는데 글에 첨부되는 텍스트 파일 업로드를 자동으로 하는 방법을 잘 모르겠어서, 로또 파일 업로드는 수동으로 처리하고 있습니다. 

오픈 API를 확인해 보면 파일 첨부 API가 있습니다. 파일 첨부 API를 사용해서 텍스트 파일을 업로드를 여러 번 시도해 봤지만 정상적으로 동작하지 않았습니다. 그래서 이번에는 제가 가지고 있는 Synology NAS 에 터미널로 붙어서 CURL을 통해 티스토리 블로그에 파일첨부를 시도해봤습니다.

curl -F 'access_token=access_token값' \

     -F 'blogName=iamaman' \

     -F 'uploadedfile=@./lotto.txt' \

     https://www.tistory.com/apis/post/attach

텍스트 업로드를 시도하자 아래 그림과 같이 이미지만 업로드 할 수 있다고 에러 메시지가 뜨더군요. ~! 결과적으로 오픈 API의 파일 첨부 API를 사용해서는 텍스트 파일은 업로드 할 수 없다는걸 이제야…. 알게 됐습니다.


같은 방법으로 이미지파일을 업로드 해 보니 정상적으로 첨부가 되더군요.  정상적으로 동작하면 응답값 200을 받습니다.

그럼 텍스트 파일을 이미지 확장자로 만든 다음에 업로드 해 보면 어떻게 될까... 해서 해 봤는데... 역시나 안되더군요. 


이 글을 보시는 분들은 저처럼 Tistory Open API 를 통해 텍스트 파일 첨부하려고 뻘짓하지 마시기 바랍니다.


아래 포스팅에서 Dia 및 Draw.io 와 같은visio 대체 툴들을 소개 한적이 있는데~


http://iamaman.tistory.com/655


http://iamaman.tistory.com/998


 

회사에서는 그래도 visio 를 제공해 주더군요.

 

블록도 등을 visio 를 사용하여 그린 후에 Microsoft Word 에 삽입을 하는데~

 

이렇게 삽입된 Visio 다이어그램들을 파일로 저장하고 싶은 경우가 있더군요.

 

오늘은 Autohotkey 를 사용하여 Word 에서 VISIO 파일을 추출하는 방법에 대해 소개 하려 합니다.

 

파일 명은 wordVisioExtract.ahk 이고 코드는 다음과 같습니다.

 

 

위 코드의 3번째 줄의 pathv 라는 변수에 추출하고자 하는 Visio 파일이 들어있는 MS Word 파일의 path 를 설정 합니다.

 

다음으로 4번재 줄의 dirVisio 라는 변수에 Visio 파일을 저장할 폴더를 설정 합니다.

 

위 코드를 실행 해보면 D:\visioExtract 폴더에 Visio 파일들이 추출되서 저장 되게 됩니다.

 

아래 그림은 Visio 그림 3개가 들어있는 word 문서의 예 입니다.


 

위와 같이 구성된 word 파일에 위 코드를 실행하면~ 각 Visio 파일들이 D:\visioExtract 폴더에 1.vdx, 2.vdx, 3.vdx 라는 이름으로 저장되게 됩니다.

 





+ Recent posts