엑셀 PDF 변환 매크로 만들기 :: 엑셀 PDF 자동 저장

엑셀 PDF 변환 및 자동 저장을 위한 VBA 마스터 코드의 동작 원리와 실전 응용예제를 단계별로 살펴봅니다.

홈페이지 » 엑셀 PDF 변환 매크로 만들기 :: 엑셀 PDF 자동 저장

강의소개

이번 강의에서는 엑셀 PDF 변환 매크로를 작성하고 선택된 범위 또는 지정한 시트를 PDF로 자동으로 출력하는 방법을 알아봅니다. 아울러 PDF 출력 전 인쇄 레이아웃 설정을 위해 PAGE_SETUP 모듈을 사용합니다. PAGE SETUP 명령문에 대한 자세한 설명은 관련 포스트를 참고하세요.

엑셀 PDF 저장 목차 바로가기
영상강의


예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.

  • [엑셀 VBA] 엑셀 PDF 자동 저장 매크로 - 예제파일
    예제파일
  • [퀵VBA] 엑셀 PDF 자동저장
    완성파일

1. 엑셀을 PDF로 저장하는 방법 (매크로 없이)

엑셀은 PDF 저장기능을 기본적으로 제공하며, 크게 2가지 방법이 있습니다.

  • PDF 파일 형식으로 [다른 이름으로 저장]하기
  • PDF 형식이 지원되는 프린터로 출력하기 (Microsoft Print to PDF, ALPDF, 등)
1-1. PDF 파일 형식으로 ‘다른 이름으로 저장’

[파일] – [다른 이름으로 저장]을 선택합니다. 이후 파일형식을 ‘PDF’ 로 선택한 뒤 원하는 경로에 파일을 저장합니다.

1-1. pdf 다른이름으로 저장
[다른 이름으로 저장] 에서 엑셀을 PDF 형식으로 저장 할 수 있습니다.
1-2. PDF 출력이 지원되는 프린터로 저장하기 (Microsoft Print to PDF 이용)

Microsoft에서 지원하는 Microsoft Print to PDF 프린터를 사용하여 엑셀을 PDF로 저장할 수 있습니다.

Microsoft Print to PDF 프린터는 윈도우 7 이상 사용자라면 기본으로 설치되어 있으며, 만약 프린터목록에서 보이지 않을 경우 관련링크에 자세히 적어드렸으니 프린터 설치 후 진행하시기 바랍니다.

1-2 인쇄 Microsoft Print to PDF
PDF 출력이 지원되는 프린터를 사용하면 엑셀을 PDF로 보다 쉽게 변환할 수 있습니다.

프린터로 PDF를 출력할 경우 머리말과 꼬릿말, 그리고 한페이지에 열 맞추기 등 다양한 페이지 레이아웃을 설정할 수 있는 장점이 있습니다.

2. 이번 강의 사용된 보조 명령문

이번 강의에서는 총 4개의 보조 명령문과 1개의 보조 모듈이 사용되었습니다. 각 보조 명령문에 대한 자세한 설명은 관련 포스트를 참고하세요.

강의에 사용된 VBA 보조 명령문
'##########################################
'z_SubModule 이라는 모듈을 생성한 뒤 복사/붙여넣기 하세요
'##########################################
Option Explicit
 
Public Function FileExists(ByVal path_ As String) As Boolean
 
    FileExists = (Dir(path_, vbDirectory) <> "")
 
End Function
 
Public Function GetDesktopPath(Optional BackSlash As Boolean = True)
 
Dim oWSHShell As Object
 
Set oWSHShell = CreateObject("WScript.Shell")
 
If BackSlash = True Then
    GetDesktopPath = oWSHShell.SpecialFolders("Desktop") & "\"
Else
    GetDesktopPath = oWSHShell.SpecialFolders("Desktop")
End If
 
Set oWSHShell = Nothing
 
End Function
 
Function FileSequence(FilePath As String, Optional Sequence As Long = 1)
 
Dim Ext As String: Dim Path As String: Dim newPath As String
Dim Pnt As Long
 
Pnt = InStrRev(FilePath, ".")
Path = Left(FilePath, Pnt - 1)
Ext = Right(FilePath, Len(FilePath) - Pnt + 1)
 
newPath = Path & Sequence & Ext
 
Do Until FileExists(newPath) = False
    Sequence = Sequence + 1
    newPath = Path & Sequence & Ext
Loop
 
FileSequence = newPath
 
End Function
 
Function ValidFileName(ByVal FileName As String) As Boolean
 
Dim Arr As Variant: Dim Val As Variant
Dim Pnt As Long
 
Arr = Array("/", "\", ":", "*", "?", """", "<", ">", "|")
 
If InStr(1, FileName, ":\") > 0 Then
    Pnt = InStrRev(FileName, "\")
    FileName = Right(FileName, Len(FileName) - Pnt)
    Debug.Print FileName
End If
 
ValidFileName = True
 
For Each Val In Arr
    If InStr(1, FileName, Val) > 0 Then ValidFileName = False: Exit Function
Next
 
End Function
FileExists 함수 (VBA) :: 사용자지정함수 [상세설명 및 예제 보러가기]
설명 : 지정한 파일경로의 파일존재여부를 확인합니다. 
구문 : = FileExists ( 파일경로 )
GetDesktopPath 함수 (VBA) :: 사용자지정함수 [상세설명 및 예제 보러가기]
설명 : 사용자 컴퓨터의 바탕화면경로를 출력합니다. 
구문 : = GetDesktopPath ( [백슬래쉬표시] )
FileSequence 함수 (VBA) :: 사용자지정함수 [상세설명 및 예제 보러가기]
설명 : 파일이름이 중복되지 않도록 파일이름에 순번을 매깁니다.
구문 : = FileSequence ( 파일경로, [시작번호] )
ValidFileName 함수 (VBA) :: 사용자지정함수 [상세설명 및 예제 보러가기]
설명 : 지정한 파일이름의 사용가능 여부를 확인합니다.
구문 : = ValidFileName ( 파일경로 )
강의에 사용된 VBA 보조 모듈
'##########################################
'z_PageSetup 이라는 모듈을 생성한 뒤 복사/붙여넣기 하세요
'##########################################
 
Public Enum ePrintMargin
xlNone = 0
xlNarrow = 1
xlNormal = 2
xlWide = 3
End Enum
 
Public Enum ePaperSize
xlA4 = 9
xlA3 = 8
xlLetter = 1
xlA5 = 11
End Enum
 
Function getPrintMargin(eValue As ePrintMargin) As Variant
 
'// 설정된 eNum 값으로 페이지 여백설정을 위한 값을 배열로 나열합니다.
 
Select Case eValue
Case 0
getPrintMargin = Array(0.05, 0.05, 0.05, 0.05, 0.1, 0.1)
Case 1
getPrintMargin = Array(0.25, 0.25, 0.75, 0.75, 0.3, 0.3)
Case 2
getPrintMargin = Array(0.7, 0.7, 0.75, 0.75, 0.3, 0.3)
Case 3
getPrintMargin = Array(1, 1, 1, 1, 0.5, 0.5)
End Select
 
End Function
 
Sub Page_Setup(WS As Worksheet, Optional LHead As String = "", Optional RHead As String = "&D / &T", _
Optional LFoot As String = "본 페이지의 무단복제를 금합니다.", Optional RFoot As String = "&P / &N 페이지", _
Optional eMargin As ePrintMargin = xlNarrow, _
Optional HFit As Boolean = True, Optional VFit As Boolean = False, _
Optional HCenter As Boolean = True, Optional VCenter As Boolean = False, _
Optional eOrient As XlPageOrientation = xlPortrait, Optional eSize As ePaperSize = xlA4)
 
Dim pSetup As String
Dim varMargin As Variant
Dim lngOrient As Integer
 
'// 인쇄설정 업데이트 중단 (속도증가)
Application.PrintCommunication = False
 
'// 인쇄여백값을 받아옵니다.
varMargin = getPrintMargin(eMargin)
 
'// 인쇄용지 방향을 설정합니다.
If eOrient = xlPortrait Then
lngOrient = 1
Else
lngOrient = 2
End If
 
'// ExecuteExcel4Macro 의 Page.Setup 명령문 실행을 위한 문구를 입력합니다.
Head = """&L" & LHead & "&R" & RHead & """"     '// 페이지 머릿말입니다.
Foot = """&L" & LFoot & "&R" & RFoot & """"     '// 페이지 꼬릿말입니다.
pLeft = varMargin(0)                            '// 왼쪽여백
pRight = varMargin(1)                           '// 오른쪽여백
Top = varMargin(2)                              '// 윗여백
Bot = varMargin(3)                              '// 아래여백
Head_margin = varMargin(4)                      '// 머릿말여백
Foot_margin = varMargin(5)                      '// 꼬릿말여백
Hdng = 0                                        '// 행/열반복 출력여부 0 = 반복출력안함 1 = 반복출력
Grid = False                                    '// 눈금선출력여부
Notes = False                                   '// 메모출력여부
H_cntr = HCenter                                '// 가운데정렬
V_cntr = VCenter                                '// 중앙정렬
Orient = lngOrient                              '// 문서방향, 1 = 세로 2 = 가로
Paper_size = eSize                              '// 용지크기
Pg_num = 1                                      '// 페이지 시작번호
Pg_order = 1                                    '// 페이지번호 순서, 1 = 위-아래-우 2 = 좌-우-아래
Quality = ""                                    '// 인쇄품질 (dot-per-inch로 입력) (공백 = 자동)
bw_cells = False                                '// 흑백인쇄여부, TRUE = 글자/테두리 검정,배경 흰색 FALSE = 색깔
pScale = 100                                    '// 축소/확대비율 또는 TRUE (Fit to Page)
 
'// 여백을 없음으로 설정할 경우 머릿말/꼬릿말을 삭제하여 인쇄영역과 겹치지 않도록 합니다.
If eMargin = xlNone Then
Head = """"""
Foot = """"""
End If
 
 
'// ExecuteExcel4Macro 명령문을 실행합니다.
pSetup = "PAGE.SETUP(" & Head & ", " & Foot & ", " & pLeft & ", " & pRight & ", " & Top & ", " & Bot & ", "
pSetup = pSetup & Hdng & ", " & Grid & "," & H_cntr & "," & V_cntr & "," & Orient & ","
pSetup = pSetup & Paper_size & "," & pScale & ","
pSetup = pSetup & Pg_num & "," & Pg_order & "," & bw_cells & "," & Quality & ","
pSetup = pSetup & Head_margin & "," & Foot_margin & "," & Notes & ")"
 
 
Application.ExecuteExcel4Macro pSetup
 
'// ExecuteExcel4Macro에서는 '한 페이지에 행/열 맞추기' 기능이 지원되지 않습니다.
'// 따라서 시트의 PageSetup 속성으로 '페이지 행/열 맞추기 기능을 설정합니다.
With WS.PageSetup
If HFit = True Then
.FitToPagesWide = 1
Else
.FitToPagesWide = False
End If
 
If VFit = True Then
.FitToPagesTall = 1
Else
.FitToPagesTall = False
End If
End With
 
'// 인쇄설정 업데이트
Application.PrintCommunication = True
 
End Sub
PAGE_SETUP 모듈 :: VBA 보조모듈 [상세설명 및 예제 보러가기]
설명 : 시트의 인쇄 레이아웃을 설정합니다.
구문 : PAGE_SETUP ( 해당시트, [머리말], [꼬릿말], [여백], [반복출력], 등… )

3. 엑셀 PDF 저장 매크로 본 명령문 작성

엑셀을 PDF로 저장하기 위한 본 명령문을 작성합니다. 명령문의 이름은 Rng_To_Pdf 로 진행하겠습니다.

VBA 편집창의 [삽입] – [모듈] 을 클릭하여 새로운 모듈을 추가한 뒤 명령문을 작성합니다.

3-1. 인수 설정

본 명령문에는 총 7개의 인수가 들어갑니다. 각 인수는 아래와 같습니다.

인수 설명
rngSelect
[Range]
PDF로 출력할 범위입니다.
FileName
[String, 선택인수]
저장할 파일명입니다. 기본값은 "pdf출력" 입니다.
SavePath
[String, 선택인수]
저장 경로입니다. 기본값은 바탕화면입니다.
DocProperty
[Boolean, 선택인수]
문서속성 저장 여부입니다. 기본값은 TRUE 입니다.
PrintArea
[Boolean, 선택인수]
기존 인쇄영역 무시 여부입니다. 기본값은 FALSE 입니다.
OpenPdf
[Boolean, 선택인수]
출력 후 PDF 파일 실행 여부 입니다. 기본값은 FALSE 입니다.
AddSequence
[Boolean, 선택인수]
파일이름 중복 시 순번으로 저장 여부입니다. 기본값은 TRUE 입니다.
Sub Rng_To_Pdf(rngSelect As Range, _
                Optional FileName As String = "pdf출력", _
                Optional SavePath As String = "", _
                Optional DocProperty As Boolean = True, _
                Optional PrintArea As Boolean = False, _
                Optional OpenPdf As Boolean = False, _
                Optional AddSequence As Boolean = True)
 
 
End Sub
3-2. 변수 설정

대부분의 변수는 명령문의 인수로 이미 받아왔으므로, 2개의 변수만 추가로 생성합니다. 생성할 변수는 아래와 같습니다.

변수 설명
WS
[WorkSheet]
PDF로 출력할 범위의 대상 워크시트입니다.
FilePath
[String]
명령문의 인수로 받아온 저장경로와 파일명이 합쳐진 완성된 파일 저장경로입니다.
Dim WS As Worksheet
Dim FilePath As String
 
Set WS = rngSelect.Parent
 
If SavePath = "" Then SavePath = GetDesktopPath
 
FilePath = SavePath & FileName & ".pdf"
 
If ValidFileName(FilePath) = False Then MsgBox ("올바른 파일명을 사용하세요"): Exit Sub

WS는 명령문에서 받아온 rngSelect 범위의 상위개체인 워크시트로 설정합니다.

FilePath의 경우 ValidFileName 보조명령문을 사용하여 파일경로에 윈도우에서 사용할 수 없는 특수기호가 사용되었는지 여부를 검토한 뒤 다음단계로 넘어갑니다.

3-3. 파일 저장경로 순번 지정

명령문의 AddSequence 값이 True로 입력되면, 저장경로에 중복된 파일이 있을 경우 파일이름 뒤에 순번을 넣어서 저장합니다. (반대로 False 일 경우 파일을 덮어쓰기 합니다.)

따라서, AddSequence 값이 True일 경우 FileSequence 함수를 통해 PDF파일 저장경로에 순번을 지정합니다.

If AddSequence = True Then
    FilePath = FileSequence(FilePath, 1)
End If
3-4. 선택범위 PDF 출력

선택된 범위를 ExportAsFixedFormat 함수를 사용하여 PDF 파일로 출력합니다. ExportAsFixedFormat(영문설명)에 대한 자세한 설명은 링크를 참고하세요.

rngSelect.ExportAsFixedFormat xlTypePDF, FilePath, xlQualityStandard, DocProperty, PrintArea, , , OpenPdf

ExportAsFixedFormat 에 들어가는 인수는 아래와 같습니다. 각각의 인수는 위에서 이미 받아왔으므로 그대로 대입해주기만 하면 간단히 마무리됩니다.

인수 설명
Type
[xlFixedFormatType]
범위를 PDF 형식 또는 XPS 형식으로 추출할지 결정
FileName
[String]
저장할 파일 경로입니다.
Quality
[xlFixedFormatQuality]
PDF 또는 XPS 의 인쇄 품질입니다.
IncludeDocProperties
[Boolean]
문서 속성 포함 여부 입니다.
IgnorePrintAreas
[Boolean]
기존 설정된 인쇄영역 무시 여부입니다.
From
[Long]
저장을 시작할 페이지 번호입니다.
To
[Long]
저장을 종료할 페이지 번호입니다.
OpenAfterPublish
[Boolean]
추출 후 파일 실행여부입니다.
FixedFormatExtClassPtr
[Object]
다른 형식으로 다시 저장될 수 있도록 FixedFormatExt 클래스로 내보내는 선택 인수입니다.
3-5. PDF 매크로 저장 전체 명령문
'####################################################
'모듈을 추가한 뒤 복사/붙여넣기 하세요.
'####################################################
 
Sub Rng_To_Pdf(rngSelect As Range, _
                Optional FileName As String = "pdf출력", _
                Optional SavePath As String = "", _
                Optional DocProperty As Boolean = True, _
                Optional PrintArea As Boolean = False, _
                Optional OpenPdf As Boolean = False, _
                Optional AddSequence As Boolean = True)
 
Dim WS As Worksheet
Dim FilePath As String
 
Set WS = rngSelect.Parent
 
If SavePath = "" Then SavePath = GetDesktopPath
 
FilePath = SavePath & FileName & ".pdf"
 
If ValidFileName(FilePath) = False Then MsgBox ("올바른 파일명을 사용하세요"): Exit Sub
 
If AddSequence = True Then
    FilePath = FileSequence(FilePath, 1)
End If
 
rngSelect.ExportAsFixedFormat xlTypePDF, FilePath, xlQualityStandard, DocProperty, PrintArea, , , OpenPdf
 
End Sub

4. 작성한 명령문 테스트하기

선택범위를 PDF로 추출하는 명령문이 잘 동작하는지 테스트합니다. 아래와 같이 테스트 명령문을 작성합니다. 본 강의에 사용된 예제파일에서 [급여명세서] 시트는 Sheet4에 해당합니다. 따라서 Sheet4를 기준으로 인쇄 레이아웃을 설정한 뒤 선택한 범위를 PDF로 추출한다는 가정하에 명령문을 작성합니다.

4-0. Sheet4 급여명세서
강의에서 사용된 예제파일의 [급여명세서] 시트의 시트ID는 ‘Sheet4’ 입니다.

Page_Setup (인쇄 레이아웃 설정) 모듈에 대한 자세한 설명은 관련 링크를 참고하세요.

Sub Test()
 
Dim FileName As String
 
FileName = Sheet4.Range("E3").Value & "-" & Sheet4.Range("H3").Value & "년 " & Sheet4.Range("H4").Value & "월"
 
Page_Setup Sheet4, FileName, HCenter:=False
 
Rng_To_Pdf Selection, FileName, AddSequence:=False
 
End Sub

명령문을 작성한 뒤 엑셀의 [급여명세서] 시트로 이동합니다. 이후 상단 [개발도구] – [삽입]에서 ‘양식컨트롤’의 [단추]를 추가합니다.

4-1. 개발도구 양식 단추 추가
[개발도구] – [삽입] 에서 양식컨트롤 단추를 추가합니다.

새로운 팝업창 목록에서 우리가 방금 작성한 Test 명령문을 선택합니다. 이후 단추의 이름을 본인이 원하는 단추이름으로 변경합니다. 예제에서는 ‘선택영역을 pdf로 추출’이라고 변경하였습니다.

4-2 개발도구 매크로 지정
방금 작성한 Test 명령문을 단추에 연결한 뒤, 단추이름을 원하는 문장으로 변경합니다.

[급여명세서] 시트에서 범위를 선택 후 버튼을 클릭하면 바탕화면에 직원명과 년도 및 월이 적힌 파일명으로 PDF 파일이 저장됩니다.

4-3 범위 선택 후 pdf 출력
버튼을 클릭하면 선택한 범위가 바탕화면에 PDF파일로 저장됩니다.

PDF파일을 실행합니다. 좌측 상단에는 직원명과 해당기간, 우측상단에는 PDF를 저장한 시간이 출력됩니다. 머리말 및 꼬릿말은 Page_Setup 모듈을 사용하여 본인이 원하는 형태로 마음껏 변경해서 사용할 수 있습니다.

4-4 머릿말 꼬릿말
머리말과 꼬릿말 등의 다양한 인쇄 레이아웃 설정도 변경할 수 있습니다.

5. 시트 전체 또는 고정된 범위를 PDF로 저장하는 매크로 명령문 (응용)

5-1. 시트에서 사용 중인 전체 범위를 PDF로 출력하기

워크시트의 UsedRange 속성을 사용하여 시트에서 사용중인 범위를 자동으로 받아와 PDF로 저장합니다. UsedRange(영문설명)에 대한 설명은 마이크로소프트 홈페이지 관련 링크를 참고하세요.

Sub Test()
 
Dim FileName As String
 
FileName = Sheet4.Range("E3").Value & "-" & Sheet4.Range("H3").Value & "년 " & Sheet4.Range("H4").Value & "월"
 
Page_Setup Sheet4, FileName, HCenter:=False
 
'# Rng_To_Pdf 의 저장범위를 Sheet4에서 사용중인 전체 범위로 입력합니다.
'# 시트 UsedRange 에 대한 설명은 아래 링크를 참고하세요.
'# https://docs.microsoft.com/en-us/office/vba/api/excel.worksheet.usedrange
 
Rng_To_Pdf Sheet4.UsedRange, FileName, AddSequence:=False
 
End Sub
5-2. 고정된 범위를 PDF로 출력하기

시트의 고정된 범위를 PDF로 저장할 수도 있습니다. 아래 예제는 [급여명세서] 시트의 ‘B2:E18’ 범위를 지정하여 PDF로 출력하는 명령문입니다.

Sub Test()
 
Dim FileName As String
 
FileName = Sheet4.Range("E3").Value & "-" & Sheet4.Range("H3").Value & "년 " & Sheet4.Range("H4").Value & "월"
 
Page_Setup Sheet4, FileName, HCenter:=False
 
'# 시트의 특정 범위를 지정하여 PDF로 저장할수도 있습니다.
Rng_To_Pdf Sheet4.Range("B2:E18"), FileName, AddSequence:=False
 
End Sub
5-3. 미리 설정된 인쇄영역을 받아와 PDF 출력하기

PageSetup.PrintArea 속성을 사용하여 해당 시트의 인쇄영역을 받아와 PDF로 출력할 수도 있습니다.

'# 시트의 인쇄영역을를 지정하여 PDF로 저장할수도 있습니다.
Rng_To_Pdf sheet4.Range(sheet4.PageSetup.printare), FileName, AddSequence:=False
4.9 30 투표
게시글평점
guest
68 댓글
Inline Feedbacks
모든 댓글 보기
짱아둥이
짱아둥이
2020년 3월 31일 3:43 오후
게시글평점 :
     

강의 잘 보고 있습니다.
업무에 참고하려고 노력하고 있는 사람중에 한명입니다.
동영상 보면서 따라했는데 계속해서
컴파일 오류입니다.이름이 분명하지 않습니다.
라는 메세지가 생깁니다.
뭐가 문제인지 잘 모르겠습니다.

짱아둥이
짱아둥이
2020년 4월 3일 8:17 오전
답글 남기기  짱아둥이

해결했습니다.
이 강의 전에 "선택영역이미지로~" 강의보고 VBA 모듈에 기입된 명령문이 있었는데
이 강의에서의 모듈 명령문과 중복이 되었습니다.(한 파일 내에서)
중복된 것을 정리하니까 둘다 잘 작동합니다.

야매악사
야매악사
2020년 4월 6일 7:10 오후
게시글평점 :
     

인쇄영역으로 설정된 부분만 PDF(인쇄) 변환을 하고자 합니다. 이럴땐 어떻게 해야할까요?

이혁주
이혁주
2020년 11월 28일 11:04 오전
답글 남기기  오빠두엑셀

죄송합니다. 이 내용을 모듈 어디에 넣어야 될까요?

이혁주
이혁주
2020년 11월 30일 8:13 오전
답글 남기기  오빠두엑셀

Sub Test() Dim FileName As String FileName = "케어라벨 발주서 " & Sheet1.Range("a4").Value & "-" Page_Setup Sheet1, FileName, HCenter:=True Rng_To_Pdf sheet1.Range(sheet1.PageSetup.printare), FileName, AddSequence:=True End Sub 이렇게 했는데요... [ '438'런타임 오류가… 더보기 »

파달
파달
2020년 4월 8일 11:59 오전
게시글평점 :
     

강의 잘 보고 있습니다.
항상 감사드립니다.
점심 맛있게 드시고 좋은하루 되십시요~!

김효정
김효정
2020년 4월 8일 4:23 오후
게시글평점 :
     

안녕하세요.강의 잘 보고 있습니다. 다름이 아니라 PageSetup 모듈에서 바닥글의 글꼴 설정을 하고 싶은데 어떻게 하면 될까요??

그리고
그리고
2020년 4월 30일 10:44 오전
게시글평점 :
     

선택 영역을 수정해 보고 싶습니다. 예로 단추는 sheet3에만들고 선택영역은 sheet1에서 불러오고 싶고 또하나는 sheet3에 단추를 만들고 선택영역은 sheet1에서 A1:M20 이런식으로 만들어 응용해보고 싶습니다. 도움 요청 드립니다. 어디를 손봐야 할까요? Sub… 더보기 »

그리고
그리고
2020년 4월 30일 11:39 오전
게시글평점 :
     

PDF가 아닌 선택범우를 엑셀로 저장하고자 한다면 어떻게 수정이 필요할까요?
rngselect.ExportAsFixedFormat xlTypePDF, filepath, xlQualityStandard, docproperty, printarea, , , openpdf

박원석
박원석
2020년 6월 9일 6:15 오전
게시글평점 :
     

선생님 강의 완전 잘 보고 있습니다. 왕초보임에도 불구하고 일단 무조건 따라서 하다보니 이해가 되는 것 같습니다.^^ 저의 궁금한 점은 혹시 모든 인원 자료를 한번에 pdf 변환 하는 매크로 제작도 가능할런지요.… 더보기 »

Last edited 1 년 전 by 박원석
다빈치
다빈치
2021년 11월 23일 4:45 오후
답글 남기기  오빠두엑셀

안녕하세요? 방금 전에 댓글 달았는데 삭제가 되었네요? 저도 박원석님 처럼 전체 인원의 명세를 모두 pdf로 한꺼번에 변환하려고 하는데... 선생님께서 알려주신대로 For i = 1 to 4 Sheet4.Range("C3").Value = "OPD000" &… 더보기 »

승빵빵
승빵빵
2020년 7월 13일 4:03 오후
게시글평점 :
     

안녕하세요 유튜브통해 알게되어 큰 도움 받고 있습니다.
혹시 2개의 시트를 동시에 pdf로 저장되게는 할 수 없을까요?

winyu
winyu
2020년 7월 14일 11:56 오전
답글 남기기  오빠두엑셀

앗 감사합니다. 한번 해보고 궁금한 점 있으면 다시 댓글 남기겠습니다

winyu
winyu
2020년 7월 15일 3:12 오후
답글 남기기  winyu

감사합니다 쌤 말씀대로 하니까 해결됐어요!! 혹시 저장장소를 바꾸는 방법도 있을까요?

winyu
winyu
2020년 7월 14일 9:48 오전
게시글평점 :
     

안녕하세요 강의 잘 보고 있습니다. 업무에 많이 도움되고있어요 🙂
다른게 아니고 2개시트를 동시에 pdf로 변환하는법은 없을까요?

정용선
정용선
2020년 7월 22일 2:13 오후
게시글평점 :
     

PDF로 저장할때 용지 방향이 "세로"로 저장이 되더라구요 혹시 "가로"로 저장할수있는 방법 없을까요?

지구는둥글
지구는둥글
2020년 7월 29일 1:09 오후
게시글평점 :
     

정말 많은 도움이 됬습니다 ㅠㅠ 초보인 제가 조금씩 고쳐쓰기 편하게 되어있는데요. 궁금한건 PDF저장은 잘되는데 머리말에 아랫말 다 수정이 되는데 파일 저장명이 머리말에서 없어지지가 않아요 ㅠ HEAD 명령문을 다 지우면 또… 더보기 »

둥굴이에요
둥굴이에요
2020년 7월 31일 1:08 오후
게시글평점 :
     

오빠두 함수 중 이미지룩업을 같이 써서 사용하고 있는데요. 이때 삽입되는 이미지는 메모 형식으로 되어있어서 일반설정으로는 프린트시 사진이 안나와 페이지 셋업에 들어가 notes 값을 True로 변경을 해봤는데도 여전히 메모(사진)은 노출이 되지… 더보기 »

다니
다니
2020년 10월 16일 8:40 오후
게시글평점 :
     
완성파일은 왜 없나요? 동영상에 sub test page_setup 으로 시작하는 명령문은 위에설명에 전혀없고  Dim FileName As String 으로 시작하는것만 있는데 완성파일을 올려주시면 우리가 셀주소랑 페이서 설정만 수정해서 사용하면 되지않나요?

`

다니
다니
2020년 10월 16일 8:41 오후
게시글평점 :
     

완성파일 올려주실순 없나요 ㅠㅠㅠㅠ
아무리 같이 따라해도 되지가 않아요
완성파일 다 나와있던데 왜이것만 없나요?
모든 예제파일을 완성파일까지 같이 올려주시면 좋을같아요
예제파일
완성파일
이렇게요

다니
다니
2020년 10월 16일 8:44 오후
게시글평점 :
     

문의글 올린게 없어졌어요 휴

펠리컨
펠리컨
2020년 11월 15일 12:23 오전
게시글평점 :
     

강의 너무 감사합니다. 교수님께서 알려주신대로 PDF 생성까지는 잘 됐는데, 바탕화면이 아니라 특정 폴더에 저장하고 싶으면 어떻게 하면 될까요? 무지하여 아무리 찾아보려해도 답을 모르겠어요. 부탁드립니다.

다빈치
다빈치
2021년 11월 23일 4:38 오후
답글 남기기  오빠두엑셀

말씀하신 위의 구문을 어디에 넣어야 하는 겁니까?
Optional SavePath As String = ""를
Optional SavePath As String = "C:\Users\폴더경로\"로 수정해도 되지않나요?

홍승구
홍승구
2020년 12월 4일 3:20 오후
게시글평점 :
     

안녕하세요!! 영상보여 공부하고 있는 학생입니다. 다름이아니라 엑셀에서 바로 PDF 파일로 변환하는 강의를 보고 실무에 바로 사용해보았습니다. 그러나 저희가 하나의 엑셀 파일에 3개의 시트를 사용합니다. 항상 3개 시트 모두 PDF 파일로… 더보기 »

뉴머터리
뉴머터리
2020년 12월 21일 5:00 오후
게시글평점 :
     

항상 좋은 강의 감사드립니다.
혹시 우측 상단에 머리글 부분 날짜 및 시간을 나오지 않도록 하고 싶은데,
어느 부분의 명령문을 지우면 될까요?

winn****
winn****
2021년 2월 15일 12:54 오후
답글 남기기  오빠두엑셀
RHeader=""이이부분이 계속 오류인데..맞나요?

저는 위에 아무것도 쓰고 싶지 않아서


Page_Setup Sheet1, HCenter:=True, RHeader=""
이렇게 썼는데, 뒷부분이 오류로 나와요
로훈
로훈
2020년 12월 27일 12:34 오전
게시글평점 :
     

요거 완성파일 다운 받아서 사용 하고 있는데요!!
저는 선택 범위가 아니라 저네 범위로 나옵니다 .ㅠ. ㅠ

로훈
로훈
2020년 12월 27일 1:47 오전
답글 남기기  로훈

해결 했습니다!!! setup을 보면 되더라구요 정말 여러가지 기능이 있는데 이건 찾아보는 자 만이 얻을수 있는 지식이네요. 다음에 setup이걸로 한번 강의도 추가해주세요! 정말 다양한 .. 인수들이 있네요!!

특전요원
특전요원
2021년 2월 12일 10:56 오전
게시글평점 :
     

안녕하세요 예제 따라하다가 질문드립니다.
Page setup에서 프린트 상단에 오빠두 -2020년 8월 이 나오게 그대로 매크로에 설정했는데 실제 인쇄되는 면을 보면 -년월 이렇게 E3,H3,H4는 아예 안나옵니다. 제가 뭘 잘못했는지 모르겠습니다.

Last edited 9 월 전 by 특전요원
winn****
winn****
2021년 2월 15일 2:22 오후
게시글평점 :
     

안녕하세요.

한페이지에 모든 열 맞추기로 수정하려면 어디를 손보면 될까요?

이승준
이승준
2021년 2월 16일 11:38 오전
게시글평점 :
     

안녕하세요!
시트1에는 세로출력
시트2에는 가로출력으로 하여 1개의 PDF파일로 저장하는 방법 있을까요?

아이디어려워
아이디어려워
2021년 4월 13일 12:15 오후
게시글평점 :
     

인쇄설정 업데이트 명령문이 계속 오류라고 나오는데요 어떻게 해야할까요?
'// 인쇄설정 업데이트
Application.PrintCommunication = True
 

ㅈㄹㄷ
ㅈㄹㄷ
2021년 5월 18일 11:44 오전
게시글평점 :
     

와 1시간을 봤는데도 하나도 이해를 못하겠네요 진짜 너무 어렵네요 이렇게 좋은강의인데도 이해를 못하니 자괴감만듭니다 후..

Yoon
Yoon
2021년 5월 27일 12:37 오후
게시글평점 :
     

안녕하세요? 정말 업무 활용에 큰 도움이 되고 있습니다. 외람된 말씀이지만 혹시 해당 강의 모듈&sub모듈 명령문 모두 암기해서 활용할 줄 알아야 하는건가요? 보통 vba 활용이라는 말의 범주가 어떻게 되는건가요? 프로그래머가 아니여서… 더보기 »

뉴비!!!!
뉴비!!!!
2021년 6월 10일 2:32 오후
게시글평점 :
     

안녕하세요. z_pagesetup을 복사-붙여넣기 하고. 첫번 째 module1을 세탕할 때 알려주신대로 명령문을 넣고 매크로를 실행하면 '1004'런타임 오류가 발생하였습니다: 'PrintCommunication;메서드('Application;개체의)에서 오류가 발생하였습니다. 라는 창이 뜨면서 계속-종료-디버그-도움말을 선택하는 창이 나오는데 여기서 '디버그'를 누르면… 더보기 »

배승섭
배승섭
2021년 8월 2일 3:57 오후
게시글평점 :
     

다른건 다 변경을 해서,, 사용할 수 있는데, 좌측 상단 머릿말이랑(현재는 오빠두엑셀 - 퀵VBA 예제) 우측 상단 머릿말(시간 날짜)가 뭐를 해도 변경이 안되네요... 어떤걸 수정해야 변경이 될까요..? 강의 너무 감사하게 보고… 더보기 »

정아영
정아영
2021년 8월 13일 11:22 오전
게시글평점 :
     

감사합니다~~ 워크시트 각각 개별로 다른 파일로 저장되게끔 하려면 어떻게 해야할까요~>?ㅠㅠ

이혜주
이혜주
2021년 8월 27일 4:07 오후
게시글평점 :
     

안녕하세요! 한 엑셀 파일에 60개 정도의 워크시트가 있는데, 50개의 워크시트만 PDF로 저장하고 싶습니다. 매번 하나하나 저장하기 힘들어서 50개의 워크시트를 각각 50개의 PDF파일로 한번에 변환할 수 있는 명령문도 가능할까요? 가능하면 어떻게… 더보기 »

향기
향기
2021년 9월 28일 9:47 오전
게시글평점 :
     

항상 잘보고있습니다. 소스를 따라하며 작성도 해보았고 완성된파일에 시트만 옮겨서 시트설정을 전부 바꿔 주었습니다만 실행시 올바른파일명을 입력하세요 가 계속뜹니다..외국거주중입니다만 다른 설정이 필요한건가요 ?

UPrayer
UPrayer
2021년 11월 23일 12:24 오전
게시글평점 :
     

이번 강의를 보고 실무에 사용할 수 있을 정도로 만들었는데 질문이 하나 생겼습니다. vba를 이용하여 pdf 변환과 동시에 pdf파일에 비밀번호를 설정 할 수 있을까요?

UPrayer
UPrayer
2021년 11월 24일 5:50 오후
답글 남기기  오빠두엑셀

답변 감사합니다. 죄송하지만 pdf 혹은 서드파티 라이브러리를 구할수 있는 사이트를 알려주실수 있을까요? 추가로 코드를 배울 수 있는 곳도 부탁드립니다.

68
0
여러분의 생각을 댓글로 남겨주세요.x