소프트웨어 오피스2013이후버전 엑셀에서도 내맘대로 인쇄하기[매크로] ★
2015.11.29 11:09
오피스 2013버전부터인지는 모르지만, 구버전처럼 인쇄할때 1,3-6,8,10 이런식으로 개별페이지를
지정해서 인쇄하는 기능이 사라졌습니다. 그래서 매크로를 이용해 옛날 인쇄기능을 살려봤습니다.
일단 매크로를 지정하려면 지정한 버튼을 클릭하거나 하는 대상이 필요합니다.
저는 아래 그림과 같이 특정 셀에다가 그림화일을 삽입하겠습니다.
왜냐하면, 기존엑셀시트에 눈에 보이는 뭔가를 추가해서 인쇄를 하면,
불필요한 인쇄버튼이나 모양,글씨 까지 출력되어 버리기 때문에 원래의 인쇄결과에 아무런 영향을 주지 않게 하기 위해 이렇게 합니다.
삽입할 그림화일또한 흰색또는 투명한 png화일을 미리 그림판에서 만들어 놓습니다.
(이정도는 설명안해도 하실 수 있겠죠?? ミ:つÞ)
아래 그림과 같이 투명한 그림화일을 삽입하면 보이지는 않지만, 모양틀만 선택했을때 저런식으로 표시되지요. 참고로 어디 있는지 쉽게 확인할 수 있도록 메모를 삽입합니다. 이 모든것이 인쇄할때는 보이지도 않을 뿐더러 아무영향을 미치지 않기 때문입니다.
방금전에 삽입한 그림을 선택하고 우클릭하면 아래와 같이 매크로 지정이라고 뜹니다.
이걸 클릭합니다.
저 같은 경우에는 미리 만들어 놓은것이 있어서 아래와 같은 목록이 뜨지만,
신경쓰지말고 원하는 이름을 입력후 편집을 누릅니다.
그러면 아래와 같은 매크로편집창이 뜹니다.
아래와 같이 입력합니다.
------------------------------------------
Sub 내맘대로인쇄()
Dim iTotalPage As Integer
Dim sPage() As String
Dim iStartPage As Integer, iEndPage As Integer
Dim sSelectPage As String
Dim sMsg As String
Dim i As Integer
sMsg = "페이지연속은 -로 제각각은 ,로 구분해서 입력하세요!" & vbCr & vbCr & _
"예) 1-3,5,9,11 이런식으로 입력하시면 됩니다!"
sSelectPage = InputBox(sMsg, "내맘대로인쇄 - 만든이:이동수 -")
iTotalPage = ActiveSheet.PageSetup.Pages.Count
If iTotalPage > 0 Then
sPage() = Split(sSelectPage, ",")
For i = 0 To UBound(sPage)
If InStr(1, sPage(i), "-") > 0 Then
iStartPage = CInt(Left(sPage(i), InStr(1, sPage(i), "-") - 1))
iEndPage = CInt(Mid(sPage(i), InStr(1, sPage(i), "-") + 1))
ActiveSheet.PrintOut From:=iStartPage, To:=iEndPage
Else
If iTotalPage >= CInt(sPage(i)) Then
ActiveSheet.PrintOut From:=sPage(i), To:=sPage(i)
End If
End If
Next i
End If
End Sub
위와 같이 입력하고나서 저장버튼을 누르면 끝납니다.
원래 만들어져 있는 문서를 매크로기능을 추가해 사용하려면 다른 이름으로 저장을 할때 .XLSM화일로 다시 저장해주셔야 매크로기능을 이용할 수가 있습니다.
그리고, 참고로 기본적으로 매크로보안 때문에 사용을 할 수 없다고 나올겁니다.
먼저 포스트한 글(https://starbros.blog.me/220426938918)과 같은 방법으로 첨부화일을 이용해
엑셀매크로허용.reg을 파일을 더블클릭해서 레지스트리적용 되도록 합니다.
혹 안되면 파일-옵션-보안센터-매크로설정 에서 아래와 같이 설정해 주시면 됩니다.
제대로 하셨다면, 클릭을 했을때 아래와 같은 창이 뜨게 됩니다. ミ:つÞ
좋은 강좌 잘 보았습니다.
메크로 지정된 파일만 가능한 방법이군요
차라리 프린트 속성에서 지정하는 방법이 좋지 않나요?