반응형

실무 자동화 (11편): 조건에 맞는 데이터만 "PDF로 자동 변환" 하여 저장하기

 

안녕하세요, 물류 현장의 비효율을 코딩으로 정복하는 '칵칵'입니다. ☕

거래처별로 명세서를 보내거나 일일 보고서를 공유할 때, 엑셀 파일을 그대로 보내기보다 내용 수정이 불가능한 PDF 형식을 선호하는 경우가 많습니다. 매번 [다른 이름으로 저장] → [PDF 선택] → [파일명 입력]... 이 과정을 50번 반복하고 계신가요? 오늘은 클릭 한 번으로 모든 데이터를 PDF로 굽고 폴더에 정돈하는 VBA 코드를 공개합니다.

🛠 PDF 자동 저장 VBA 코드

Sub SaveAsPDF()
    Dim ws As Worksheet
    Dim savePath As String
    Dim fileName As String
    
    Set ws = ThisWorkbook.ActiveSheet
    
    ' 1. 저장할 경로 설정 (본인 폴더에 맞게 수정 필수!)
    savePath = "C:\Users\Desktop\Report_PDF\"
    
    ' 2. 파일명 설정 (예: A1셀의 제목 + 오늘 날짜)
    fileName = ws.Range("A1").Value & "_" & Format(Date, "yyyymmdd") & ".pdf"
    
    ' 3. PDF 변환 및 저장 실행
    On Error Resume Next
    ws.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=savePath & fileName, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    
    If Err.Number = 0 Then
        MsgBox "PDF 저장이 성공적으로 완료되었습니다!"
    Else
        MsgBox "저장 경로가 틀렸거나 오류가 발생했습니다."
    End If
    On Error GoTo 0
End Sub

💡 코드 핵심 해설 (실무 포인트)

  • ExportAsFixedFormat: 엑셀 시트를 PDF나 XPS 같은 고정 형식으로 내보내는 핵심 명령입니다.
  • Format(Date, "yyyymmdd"): 파일명 뒤에 자동으로 오늘 날짜를 붙여주어 파일 관리를 용이하게 합니다.
  • IgnorePrintAreas:=False: 시트 내에 설정된 '인쇄 영역'만 PDF로 저장하게 합니다. 영역 밖의 불필요한 메모는 무시됩니다.

⚠️ 칵칵의 포인트 해설: 여기서 실수하면 저장 안 됩니다!

  • 실수 1: 폴더 미생성 - savePath에 적은 폴더가 실제로 존재해야 합니다. 폴더가 없으면 매크로는 파일을 만들지 못하고 에러를 뿜습니다.
  • 실수 2: 인쇄 영역 미설정 - 인쇄 영역을 잡지 않고 돌리면 시트 전체가 엉뚱한 비율로 PDF화 될 수 있습니다. 실행 전 반드시 **[인쇄 영역 설정]**을 완료하세요.
  • 실수 3: 파일명 금지 문자 - fileName으로 쓸 셀(A1 등)에 / \ : * ? " < > | 기호가 있으면 저장이 안 됩니다. 특수문자를 제거하세요!
  • 실수 4: 같은 이름의 파일 열림 - 이미 저장된 PDF 파일이 열려 있는 상태에서 매크로를 또 실행하면 '접근 권한 에러'가 발생합니다.

 

#엑셀VBA #PDF변환 #자동저장 #매크로 #업무자동화 #칼퇴꿀팁 #물류관리 #VBA강좌 #직장인코딩 #데이터정리 #엑셀꿀팁 #칵칵 #보고서자동화 #PDF내보내기 #엑셀초보

다음 엑셀 이야기 예고: 「엑셀 VBA (12편): 폴더 내의 수많은 PDF 파일 이름을 엑셀 데이터로 한 번에 변경하기」

반응형

+ Recent posts