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

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

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

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

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

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



요즘 네이버 댓글 조작 사건으로 인해서 정치권이 시끄럽습니다. 드루킹 일당이 매크로 프로그램을 사용하여 대한민국 국민들이 가장 많이 사용하고 있는 포털인 네이버 기사의 댓글을 조작했다는 사건입니다. 네이버 댓글 조작 사건으로 인해서 보수 정당에서는 특검을 요구하고 있고 자유한국당의 김성태 원내대표는 최근까지 단식을 했었죠. 저는 개인적으로 댓글을 잘 안 봐서 이게 왜 이렇게 문제가 되나라는 생각을 했었는데, SBS 뉴스토리를 확인해 보니 많은 사람들이 댓글을 확인하고 그에 대해서 직간접적으로 영향을 받는다고 합니다. 그런데 사실 개발자 입장에서 생각해보면 이런 댓글 조작은 뒤늦게 발견은 가능하겠지만 막을 수는 없을 것으로 생각됩니다.

SBS 뉴스토리 ‘디지털 함정 인터넷 여론 조작’편을 보다 보니 어떤 사이트에 아이디를 자동으로 만드는 프로그램이 소개 되더군요. 바로 오토핫키 였습니다.

방송에 출연한 개발자 분은 scite4autohotkey 에디터 환경에서 Autohotkey 를 사용하여 한 사이트에 자동으로 회원에 가입하고 아이디를 만드는 데모를 보여주더군요. 방송에서는 이런 프로그램을 만드는데 한 30분 정도면 된다라고 소개를 했었는데 그마만큼 Autohotkey 는 생산성이 정말 좋은 언어라고 생각 합니다. 아래 화면과 같이 데모를 위한 간단한 GUI 프로그램도 단 몇 분만에 만들 수 있습니다.

방송에서는 Autohotkey 의 아주 일부 기능만 소개를 했는데 사실 오토핫키는 윈도우 환경에서 정말 많은 것들을 자동 할 수 있습니다. COM(Component Object Model) 도 사용할 수가 있어서 Microsoft Office 제품들도 자동화 가능하고~~

http://iamaman.tistory.com/458

http://iamaman.tistory.com/1625

http://iamaman.tistory.com/1996

아래 포스팅에서 소개한 바와 같이 이베스트증권에 xingAPI 를 사용하여 시스템 트레이딩에도 사용할 수가 있습니다.

http://iamaman.tistory.com/2224

저 개인적으로는 현재의 Autohotkey 는 수치 연산 분야를 제외한 대부분의 분야에서 효율적으로 사용이 될 수 있을 것이라고 생각됩니다.

윈도우 컴퓨터를 사용하는 많은 분들이 Autohotkey 를 사용해 보셨으면 하고 오늘부터 한번 공부 해 보시는 건 어떨까요? 여러분들의 컴퓨터 사용 업무 생산성이 팍팍 증가하는 것을 느낄 수 있을 겁니다.



아래 포스팅에서 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 을 사용해서도 시스템 트레이딩이 가능할것도 같네요.



요즘은 휠이 달린 마우스를 많이 들 사용 할테니 마우스 휠을 이용한 위 아래 스크롤은 많이들 하실겁니다. 

그런데 좌우 스크롤도 할 수 있다는거 아시나요?

물론 좌우 스크롤을 하기 위해서는 키보드의 shift 키를 같이 눌러 줘야 합니다.

화면 크기가 확대 된 상태가 되면 좌우 스크롤바가 나타나는데

이때 Shift + Mouse Wheelup 또는  Shift + Mouse Wheeldown 을 해 보면 좌우 스크롤이 동작하는걸 확인 할 수 있습니다. 

크롬에서 해봤는데 잘 되네요. 

그런데 우리가 업무에 많이 활용하는 Microsoft Office 에서는 이상하게 위 단축키가 정상적으로 동작하지 않더군요. 

그래서 다음과 같은 Autohotkey 코드를 만들어 봤습니다.

Microsoft Word,  Excel, Powerpoint 를 위한 단축키이고 visio 에서는 위 단축키가 정상적으로 동작 하길래 만들지 않았습니다.

Shift + Mouse Wheelup 을 하면 오른쪽으로, Shift + Mouse Wheeldown 을 하면 왼쪽으로 스크롤 됩니다.


  1. 노을과보름달 2017.09.29 09:58

    멋진 스크립트 팁 주셔서 감사합니다.
    같은 문제로 고민하다가 해결했습니다.
    단, #IfWinActive, ahk_class XLMAIN 라는 문구가 오토핫키 스크립트에서 맨 아래에 위치해야 하겠더군요.
    안 그러면 기존 설정들 중 일부가 엑셀에서만 작동하는 문제가 있습니다.

    • 남성 2017.09.29 10:00 신고

      도움 되었다니 다행입니다. 방문해 주셔서 감사합니다.

  2. 낌스트 2018.12.01 00:08

    안녕하세요, 늦게나마 포스트 발견하여 autohoekey 잘사용하고 있습니다.
    위에 소스 활용하여 가로스크롤 기능 구현하였는데
    실행은 되나 0x800401e3 경고문구가 뜨고 확인을 눌러줘야합니다.
    조치 방법은 따로 없을까요?

    • 남성 2018.12.01 12:28 신고

      일단 0x800401e3 에러는 경험해 보지못한 에러라 안 뜨게 하는 방법은 모르겠고 warning 등이 뜨면 해당 창의 버튼을 자동으로 눌러서 빨리 닫아주게 하는 방식 등을 사용하는 방법도 있을것 같네요.

  3. 낌스트 2018.12.02 12:37

    혹시 해당창을 닫게하는 소스코드는 어떻게 구현하면 좋을까요?
    autohotkey 초보라 참 어렵네요 ㅠ.ㅜ

    • 남성 2018.12.02 12:55 신고

      해당 창의 정보를 알아야 하니까 Active Window Info 프로그램을 사용하여 해당 창의 class 등을 알아내서 닫게 해주면 되겠죠.

      아래 포스팅에서 소개하는 AHK_Window_Info_v1.7.ahk 를 써도 되고 아니면 Autohotkey를 설치하면 들어있는 Windows spy 프로그램을 써도 됩니다.

      http://iamaman.tistory.com/1246

      0x800401e3 에러가 항상 뜬다고 한다면 winwait 를 해서 해당창을 기다리다가 해당 차이 뜨면 winclose 또는 winkill 을 통해 닫아주게 하거나 send 또는 controlsend 를 통해 확인 버튼을 클릭하게 하면 될겁니다.

      확인 창의 버튼 정보 등도 Active Window Info 프로그램을 사용하여 ClassNN 정보를 확인하면 됩니다. ClassNN 정보를 확인하는 방법등에 대해서는 아래 포스팅을 참조하세요.

      http://iamaman.tistory.com/1387

  4. 낌스트 2018.12.02 15:00

    엑셀 실행시 최초 이 경고창만 뜨고
    예 한번만 눌러주면 이 스크립트는 잘 실행됩니다.
    제가 없애고자 하는 건 이 경고창이 떳을 때 자동으로 예라고 누르는 스크립트를 구현하고 싶습니다.

    해당 경고창의 class는 32770이고
    해당 경고창의 예 버튼은 Button1입니다.

    이코드를 실행시켜도 여전히 경고창이 뜨는데 뭐가 문제일까요?ㅠ.ㅜ

    #IfWinActive, ahk_class #32770 ; MSofficeHScroll.ahk
    WinWait, #32770
    WinActivate, #32770
    Sleep, 100
    ControlClick, Button1, #32770
    return

    • 남성 2018.12.02 15:16 신고

      ahk_class 를 왜 밑에는 안 써주신건지... 모르겠네요.

      WinWait, ahk_class #32770
      WinActivate, ahk_class #32770
      Sleep, 100
      ControlClick, Button1, ahk_class#32770

      이렇게 하거나
      ControlClick 대신에 send {enter} 해도 될 듯 하네요.

  5. 낌스트 2018.12.02 15:29

    사용하는 운영체제가 어떻게 되시나요? 윈도우10 사용중인데 저는 아무리 코드 조합을 해도 엑셀을 껏다켜서 최조 실행하면 저런 메세지창이 뜨네요 엑셀에만!
    오토핫키 포럼에도 찾아보고 했지만 딱히 해결책은 없는 것 같습니다.
    도와주셔서 감사합니다.

    참고로 저 경고창은 엑셀을 실행시키고
    쉬프트랑 마우스를 눌렀을 때 생깁니다.
    예 버튼을 클릭 후 이후, 새로운 엑셀창을 켜더라도 저 메세지는 나오지 않고 실행이 잘됩니다.

    제가 사용한 소스 전문 코드입니다.

    #IfWinActive, ahk_class #32770 ; MSofficeHScroll.ahk
    ControlClick, Button1, ahk_class#32770
    return

    #MaxHotkeysPerInterval 1000#
    #IfWinActive, ahk_class OpusApp
    +WheelDown:: ; scroll right
    ComObjActive("Word.application").ActiveWindow.SmallScroll(0,0,1,0)
    return

    +WheelUp:: ; scroll left
    ComObjActive("Word.application").ActiveWindow.SmallScroll(0,0,0,1)
    return

    #IfWinActive, ahk_class PPTFrameClass
    +WheelDown:: ; scroll right
    ComObjActive("Powerpoint.application").ActiveWindow.SmallScroll(0,0,1,0)
    return

    +WheelUp:: ; scroll left
    ComObjActive("Powerpoint.application").ActiveWindow.SmallScroll(0,0,0,1)
    return

    #IfWinActive, ahk_class XLMAIN
    +WheelDown:: ; scroll right
    ComObjActive("Excel.application").ActiveWindow.SmallScroll(0,0,1,0)
    return

    +WheelUp:: ; scroll left
    ComObjActive("Excel.application").ActiveWindow.SmallScroll(0,0,0,1)
    return

    #IfWinActive

    • 남성 2018.12.02 16:23 신고

      위에 코드 보니까 아래 코드 부분에서

      ControlClick, Button1, ahk_class#32770

      ahk_class 뒤에 공백이 없네요. 아래와 같이 공백이 있어야 할 겁니다.

      ahk_class #32770


      그리고 ahk_class #32770 으로 설정하면 모든 알림창에 대해 클릭을 하게 만드는거라 그리 좋은 설정 방법은 아닌것 같습니다. ahk_class #32770 와 창의 title 을 같이 설정해 주는게 좋을것 같네요.
      예를 들어 아래와 같이 해보시는걸 추천 드립니다.

      ControlClick, Button1, MSofficeHScroll.ahk ahk_class #32770

  6. 낌스트 2018.12.02 15:37

    혹시나 몰라 해당 증상 동영상 첨부해봅니다.

    https://youtu.be/9g1cEKOr0RE

    해결책으로 생각되는게
    1. 엑셀을 실행시키고 나서 ahk 파일이 이후 지연실행되도록 설정하거나
    2. 저 경고창이 자동으로 예라고 눌러지는 소스 스크립트 구현이 필요할 것 같습니다.

  7. 곰훙이 2018.12.27 12:10 신고

    안녕하세요 댓글 달기 위해 휴면해제하고 로그인했네요
    저도 낌스트님과 똑.같.은 현상이 발생합니다
    문제의 원인은 결국 찾아내지 못했고,
    윈도우 포맷한 후에 오피스 재설치, 그리고
    MSOscroll 이라는 엑셀 추가기능으로 가로 스크롤 사용하고 있습니다
    위 코드가 이상하게 엑셀에서만 0x800401e3 에러 뜨고 나머지 ppt, word 에서는 잘 작동하네요

    이 에러에 대해 한 가지 의심스러운게 있는데요,
    아래의 코드를 사용하기 시작한 뒤로 문제가 시작되었습니다.

    ; 비활성창 스크롤되게끔 하는 소스
    *WheelDown::
    CoordMode,Mouse,Screen
    MouseGetPos,x,y,hwnd,ctrl,3
    wp:=0xFF880000|GetKeyState("LButton")|GetKeyState("RButton")<<1|GetKeyState("Shift")<<2|GetKeyState("Ctrl")<<3|GetKeyState("MButton")<<4|GetKeyState("XButton1")<<5|GetKeyState("XButton2")<<6
    lp:=y<<16|x
    IfWinExist,ahk_id %hwnd%
    {
    SendMessage,0x84,0,%lp%,,ahk_id %ctrl%
    If ErrorLevel=4294967295
    MouseGetPos,,,,ctrl,2
    Loop,%A_EventInfo%
    PostMessage,0x020A,%wp%,%lp%,,ahk_id %ctrl%
    }
    return
    *WheelUp::
    CoordMode,Mouse,Screen
    MouseGetPos,x,y,hwnd,ctrl,3
    wp:=0x00780000|GetKeyState("LButton")|GetKeyState("RButton")<<1|GetKeyState("Shift")<<2|GetKeyState("Ctrl")<<3|GetKeyState("MButton")<<4|GetKeyState("XButton1")<<5|GetKeyState("XButton2")<<6
    lp:=y<<16|x
    IfWinExist,ahk_id %hwnd%
    {
    SendMessage,0x84,0,%lp%,,ahk_id %ctrl%
    If ErrorLevel=4294967295
    MouseGetPos,,,,ctrl,2
    Loop,%A_EventInfo%
    PostMessage,0x020A,%wp%,%lp%,,ahk_id %ctrl%
    }
    return

    물론 제가 만든 코드는 아니고 구글링으로 찾은 것이며, 마우스 오버한 창의 스크롤이 되게끔 하는 코드입니다.
    듀얼모니터 쓰다보니 꼭 필요한 기능인데, 엑셀에서만 유독 비활성창 스크롤이 안되서 쓰기 시작한 뒤로 가로스크롤 문제가 시작되었네요
    혹시 이 코드의 명령어들과 어딘가 충돌나서 발생하는 문제가 아닐까 싶은데..
    아시는 바가 있는지 궁금해서 여쭤봅니다.

    • 남성 2018.12.27 21:11 신고

      위 코드와의 충돌 때문이라면 위 코드들을 실행안하고 했을때는 정상적으로 동작하는건가요? 이 부분에 대해 실험 한번 해 보시는게 좋을것 같네요.

  8. 곰훙이 2018.12.27 12:12 신고

    아참 좋은 AHK 코드들 공유해 주셔서 감사합니다.
    틈날때마다 들여다 보며 공부하고 도움 받고 있습니다.
    앞으로도 잘 부탁드려요~

    • 남성 2018.12.27 21:11 신고

      아 네 별거 아닌 블로그지만 자주 방문해 주세요. 방문해 주셔서 감사합니다. ^^

  9. 곰훙이 2018.12.28 17:43 신고

    답변 감사합니다.
    정황을 설명드리기 복잡한데 문제가 있었을 때 제 상황은..


    (윈도우 포맷& 재설치를 자주 하는 편이며, 아래의 1,2,3은 시간 순서입니다.)

    1. 윈도우10 RS4 (1709), 오피스 2013
    본문 코드로 excel,ppt,word 모두 수평 스크롤 잘 되었습니다
    댓글에 제가 작성한 '비활성창 스크롤 제어' 를 함께 사용(약 10일)하여도 문제없었습니다.

    2. 윈도우10 RS5 (1809), 오피스 2013
    포맷하고 최신 윈도우를 재설치한 후 본문의 수평스크롤 코드를 사용하려하니 에러가 시작되었습니다.
    댓글에 제가 작성한 '비활성창 스크롤 제어' 를 함께 사용 하던 안하던 본문 코드로 수평 스크롤 에러 계속 일어났습니다.

    3. 윈도우10 RS4 (1803), 오피스 2013
    찝찝한건 싫어서 포맷하고 혹시나 해서 윈도우 버전은 다시 내렸지만, 수평스크롤 코드 사용해보니 또 에러가 나더군요
    이젠 포기하고 Github 에서 만든 엑셀 추가기능 MSOscroll.dll 으로 수평 스크롤하고 있으며
    댓글에 작성한 '비활성창 스크롤 제어' 코드는 아예 사용 안하고 있습니다.

    3-1. 에러 문제
    - 엑셀에서 뜨는 저 에러는 새로운 엑셀 창이 열리고 shift+scroll 입력되는 순간, 팝업으로 뜹니다, 팝업 제목은 제 .ahk 파일명으로 뜨며 yes 를 눌러줘야만 합니다.
    - 한번 에러가 뜬 후에는 에러메세지 없이 수평 스크롤 잘 됩니다.
    - 엑셀 파일을 하나 띄운 중에 다른 엑셀 파일 불러오면 또 다시 에러 한 번 뜹니다.
    = *.xlsx 파일을 실행할 때마다 AHK 와 충돌날 만한 작업을 반복하는 것 같습니다.


    error 0x800401E3 은 한 대의 PC 에서만 에러나는게 아니고, 집에 있는 제 개인 pc (윈도우10 RS4 1803, 오피스 2013) 에서도 똑같은 에러 뜹니다.
    '비활성창 스크롤 제어' 코드를 집에선 사용하지 않았기 때문에, 이 코드의 문제라고 말씀드리긴 어렵습니다만
    혹시나 충돌날 만한 명령어들이 있을까 싶어서 AHK 초보자 입장에서 여쭤봤습니다.
    구글링 해봐도 해결책이 없어서 포맷만 여러번 하고 결국 포기했네요

    혹시 나중에 이 문제에 해답을 알게된다면, 여기에 해결 방법 작성하겠습니다 ^^

    • 남성 2018.12.28 19:24 신고

      검색을 해보니 running object table 에 등록이 안되어 있어서 그런거라고 하는데...

      정확히 원인은 잘 모르겠네요.

      될지는 모르겠지만 아래 코드 한번 돌려 보실래요?

      ComObjActive("Excel.application").Windows(1).SmallScroll(0,0,1,0)

    • 남성 2018.12.28 19:32 신고

      그리고 아래 코드도 한번 돌려보실래요?


      ex := ComObjActive("Excel.application")
      ex.Worksheets(1).Activate
      ex.ActiveWindow.SmallScroll(0,0,1,0)

  10. 곰훙이 2018.12.29 04:44 신고

    신경써주셔서 감사합니다 ^^ 먼저 올려주신
    ComObjActive("Excel.application").Window(1).SmallScroll(0,0,1,0) 은
    최초 1회는 0x800401E3 에러 한 번 뜬 뒤로
    그 다음부터는 입력할 때마다 '0x80020006 - 알 수 없는 이름입니다.' 에러가 뜨네요

    두번째 올려주신 것은 구글링으로 찾아서 시도해봤던건데 다시 시도해봤으나, 원래의 증상과 똑같습니다.
    최초 1회 0x800401E3 에러 -> 그 다음엔 에러없이 수평 스크롤 잘됨 -> 엑셀 재실행되면 다시 8x800401E3 에러 (반복)

    원인이 뭘지 참 궁금하네요...;;;

    • 남성 2018.12.29 13:57 신고

      running object table 에 등록이 안되어 그런 거라고 하는데 해당 엑셀 창을 최소화를 했다가 최대화한 이후에 한번 해 보시면 어떨까요?

  11. 낌스트 2019.02.03 21:07

    0x800401E3 에러에 대해 다시 해결해보고자 하는데

    이 에러 치료 방법은 없을 거 같고

    최초 실행시 뜨는 경고창을 자동확인하게끔 하면 제일 좋은 방법일텐데
    여러가지 가르쳐주신 방법으로 해봐도 안되네요

    ControlClick, Button1, MSofficeHScroll.ahk ahk_class #32770

    이 구문을 추가해봐도 여전히 경고창이 떠도 자동으로 '확인'버튼이 안눌러지네요

    쥔장님 자동으로 확인을 누를 수 있는 스크립트 좀 알려주실 수 있으신가요?

    • 남성 2019.02.03 21:32 신고

      일단 위에 작성 하신 명령어가 정확히 맞는지 확인해 봐야 할 겁니다. Active Window Info 를 이용하여 button 의 이름이나 에러 경고창의 이름이 정확한지 확인해 보고 위에 작성하신 ControlClick 명령어만 실행해 보세요. 해서 안되면 그냥 send 명령으로 enter 를 날려되 될 겁니다.

      위에 작성한 class 명이 맞다면 아래와 같이 하면 확인 버튼을 자동으로 누를 수 있지 않을까 싶네요.


      winwait MSofficeHScroll.ahk ahk_class #32770

      WinActivate, MSofficeHScroll.ahk ahk_class #32770

      send {Enter}

  12. 낌스트 2019.02.03 22:33

    어느정도 해결했네요
    실행파일을 두개로 분리하고
    하나는 가로스크롤 구문, 하나는 창 다는 구문을 입력시켜 동시에 실행시키니 잘되네요
    여태껏 하나로 실행시켜서 안됏나보네요
    왜 하나에 파일에 두 구문을 동시에 넣으면 실행이 안되는지는 아직도 의문이지만..
    에러창 뜨는 게 여전히 좀 아쉽지만 그래도 자동종료 구문을 추가하니 아쉬운 대로 써야겟네요
    차기 엑셀에서는 꼭 가로스크롤 구문을 지원해줬으면 하네요
    감사했습니다.

    • 남성 2019.02.04 02:29 신고

      지금은 완벽하지 않더라도 하나 하나 해결하다 보면 다음에는 조금더 완벽한 해결 방법을 찾을 수 있을 겁니다. 자주 방문해 주세요. ^^

오늘은 아래 포스팅에 이어서 powershell 을 이용하여 아웃룩에서 메일 보내는 방법에 대해 알아보려 합니다.

 

http://iamaman.tistory.com/1638



보통 회사에서 Microsoft Office 를 많이들 사용 하실 겁니다.

 

Powershell 에서는 Com Object 를 사용 할 수 있고~ Com object 를 사용하면 MS office 제품군에 대한 자동화가 가능 합니다.

 

따라서 outlook 도 자동화가 됩니다.

 

아래와 같이 간단하게 메일을 보낼 수 있습니다.

 

$textv =@"

메일 테스트 

메일 잘 가나요?

"@

 

$subject = "서버의 업데이트가 안 되었습니다."

 

$obj = New-Object -ComObject Outlook.Application

 

$newMail = $obj.CreateItem(0)

$newMail.Subject = "메일 제목"

$newMail.Body = $textv

$newMail.To = "메일 받는 사람 주소"

 

$newMail.Send()

 

 

Newmail Object 관련 Property 들은 아래 주소에서 확인 할 수 있습니다.

 

https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.mailitem_properties.aspx

 

위와 같은 방법을 사용하면 반복적으로 메일을 보내야 할 때 매우 편하게 보낼 수 있을 겁니다.


윈도우를 사용 중에 메모장이나 워드를 비롯한 문자 편집 프로그램들은 많이 사용 하실 텐데요~

 

문서 작성 중에 특수 문자를 넣어야 하는 경우가 종종 있습니다.

 

메모장과 같은 에디터에서는 한글 자음을 타이핑 하고 한자 키를 누르면 아래 그림과 같이 특수 문자를 입력 할 수 있습니다.


 

그런데 이런 방식은 내가 찾는 문자를 찾으려면 하나 하나 찾아 봐야 해서 매우 귀찮고 힘들죠~

 

그래서 Microsoft Office 처럼 문자표는 없을까~ 해서 찾아보니 있더군요.

 

Win + R 을 눌러서 실행창을 연 다음에~ charmap 이라고 타이핑 하고 확인을 눌러 줍니다.


 

그럼 다음과 같은 문자표가 뜨게 됩니다.


 

원하는 문자를 선택 한 다음에~ 복사를 누르면 클립보드에 복사가 되고~


 

사용하는 에디터에 붙여 넣으면 끝!! 입니다.

 

위에서 얘기한 자음을 입력해서 하는 방법에 비해 훨씬 편하겠죠~



아시는 바와 같이 Microsoft Office 제품군에서는 VBA를 활용하여 자동화가 가능 합니다.

 

http://iamaman.tistory.com/592


http://iamaman.tistory.com/1643


 

그런데 Visual Basic뿐만 아니라 다른 언어를 활용해서도 Office 자동화가 가능 합니다. 오늘은 Python 을 이용한 visio 그리기를 해보려 합니다.

 

구글을 좀 뒤져 보니 다음과 같이 좋은 예가 있더군요.



 

저는 현재 Windows 7 64비트를 사용 중인데~ Python 은 32비트를 사용 중입니다. 몇가지 package 들을 사용하기 위해 아래에서도 소개했던 Anaconda 를 사용하는데요~ Anaconda 를 설치하니 win32com 모듈을 그냥 사용 할 수 있더군요.

http://iamaman.tistory.com/1610


http://iamaman.tistory.com/1001


http://iamaman.tistory.com/1648


 

위 코드의 결과 아래와 같은 Visio 다이어그램이 나오게 됩니다.

 

 

좀만 공부해서 응용해 보면 다양한 다이어 그림들을 자동화 할 수 있을 것 같네요.



+ Recent posts