엑셀을 PDF로 변환해서 저장할때 PDF 이름이 시트에 적힌 이름과 같이 나오게 하고 싶어요

문서서식
작성자
푸른하늘
작성일
2023-11-09 17:06
조회
149
엑셀버전 : 엑셀2016

운영체제 : 윈도우10

질문 요약 : 각 시트제목을 PDF로 저장할때 자동으로 이름을 당겨오고싶습니다.

엑셀 시트에 항상 이름을 적어놓고 PDF로 저장하는데 그때마다 이름을 다시 써줘야되서 혹시 엑셀에서 저장할때 시트에 있는 이름을 그대로 PDF에 저장하는 방법이 있나요?

신고
스크랩
공유
전체 4

  • 2023-11-09 22:36

    @푸른하늘 님 현재 파일과 같은 폴더에 저장한다면...

    Sub ActiveSheetSaveAsPDF()
        Dim sNewFile As String
        If ActiveWorkbook.Path = "" Then MsgBox "현재 파일을 먼저 저장해야 합니다.": Exit Sub
        sNewFile = Replace(Replace(ActiveSheet.Name, "<", "<"), ">", ">")
        sNewFile = Replace(Replace(sNewFile, Chr(34), "˝"), "|", "|")
        sNewFile = ActiveWorkbook.Path & "\" & sNewFile & ".pdf"
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sNewFile, OpenAfterPublish:=False
    End Sub

     


  • 2023-11-09 17:22

    @푸른하늘 님 VBA를 쓰면 가능합니다만.. 기본 저장 기능으로는 직접 입력하는 것 외에는 방법이 없습니다.

    아래 코드를 실행해보십시오

    Sub RunPdf()
    
    Rng_To_Pdf ActiveSheet.UsedRange, ActiveSheet.Name
    
    End ub
    
    '####################################################
    '모듈을 추가한 뒤 복사/붙여넣기 하세요.
    '####################################################
     
    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
    
    
    '##########################################
    '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

    • 2023-11-09 17:37

      @더블유에이 님 붙여넣어보니 자꾸 오류가나네요


      • 2023-11-11 03:43
        채택된 답변

        @푸른하늘 님 아이고 뒤에 S가 빠졌네요

        Sub RunPdf()
        
        Rng_To_Pdf ActiveSheet.UsedRange, ActiveSheet.Name
        
        End Sub
        
        '####################################################
        '모듈을 추가한 뒤 복사/붙여넣기 하세요.
        '####################################################
         
        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
        
        '##########################################
        'z_SubModule 이라는 모듈을 생성한 뒤 복사/붙여넣기 하세요
        '##########################################
         
        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
        

        이 코드를 그대로 사용해보세요


전체 13,316
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[📚교재 출간 안내] 「진짜쓰는 실무엑셀」 , 드디어 출간되었습니다! (235)
오빠두엑셀 | 2022.02.03 | 추천 514 | 조회 259674
오빠두엑셀 2022.02.03 514 259674
공지사항 문서서식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (197)
오빠두엑셀 | 2021.10.28 | 추천 280 | 조회 17728
오빠두엑셀 2021.10.28 280 17728
64393 함수/공식
New 엑셀 함수 값 관련 질문
리덕구 | 09:26 | 추천 0 | 조회 3
리덕구 09:26 - 3
64387 VBA
New 아실 크롤링 관련 문의 (1)
임정호 | 2023.11.30 | 추천 0 | 조회 24
임정호 2023.11.30 - 24
64384 VBA
New VBA PivotItem 문의 (1)
봉s | 2023.11.30 | 추천 0 | 조회 19
봉s 2023.11.30 - 19
64382 파워쿼리/피벗
New [파워쿼리] 쿼리안에서 구분기호 기준으로 열분할을 하고 난 후, 아래로 채우기가 안됩니다.!! (2) 답변완료
jja**** | 2023.11.30 | 추천 0 | 조회 25
jja**** 2023.11.30 - 25
64381 함수/공식
New row()가 자동으로 변경될 수 있도록.... 엑셀파일 (3)
대빵 | 2023.11.30 | 추천 0 | 조회 29
대빵 2023.11.30 - 29
64377 피벗테이블
New 엑셀 피벗 행/열 비율 산출 질문 (2)
bugko**** | 2023.11.30 | 추천 0 | 조회 18
bugko**** 2023.11.30 - 18
64376 VBA
New 견적서 내용을 리스트업 하는 VBA 엑셀파일첨부파일
조범주 | 2023.11.30 | 추천 0 | 조회 31
조범주 2023.11.30 - 31
64371 구글시트
New 두 개 시트 연동 (1)
RecSoo | 2023.11.30 | 추천 0 | 조회 26
RecSoo 2023.11.30 - 26
64370 함수/공식
New 모든시트를 선택하는 함수가 있을까요?ㅠㅠ (2)
myyh**** | 2023.11.30 | 추천 0 | 조회 38
myyh**** 2023.11.30 - 38
64367 VBA
New 특정셀에 여러 변수 값을 대입하여 나오는 계산 값을 변수에 맞게 한번에 출력되게 하는 방법이 있을까요?? 엑셀파일첨부파일 (2) 답변완료
박재관 | 2023.11.30 | 추천 0 | 조회 35
박재관 2023.11.30 - 35
64366 문서서식
New 전체인쇄와 시트1개 인쇄시 이미지 품질 저하문제 첨부파일 (2)
코코마 | 2023.11.30 | 추천 0 | 조회 18
코코마 2023.11.30 - 18
64360 함수/공식
New 각 열의 텍스트를 비교하여 일치율에 따라 관련열 값 가져오기 첨부파일 (1)
요코하마박 | 2023.11.30 | 추천 0 | 조회 34
요코하마박 2023.11.30 - 34
64359 구글시트
New 엑셀 또는 구글시트 - 다른시트 데이터의 새로운값만 순차적으로 가져오는방법.. (3)
myyh**** | 2023.11.30 | 추천 0 | 조회 25
myyh**** 2023.11.30 - 25
64355 함수/공식
New sumifs 문의 드립니다. (2) 답변완료
sarangh**** | 2023.11.30 | 추천 0 | 조회 29
sarangh**** 2023.11.30 - 29
64353 함수/공식
New 엑셀 수식이 안 먹어요~ 엑셀파일 (2)
안녕 | 2023.11.30 | 추천 0 | 조회 44
안녕 2023.11.30 - 44
64352 VBA
New 명령단추 클릭시 색상변경 엑셀파일첨부파일 (2)
본아이디 | 2023.11.30 | 추천 0 | 조회 34
본아이디 2023.11.30 - 34
64351 VBA
New Sendkey 초기화 관련 문의 (1)
임정호 | 2023.11.30 | 추천 0 | 조회 24
임정호 2023.11.30 - 24
64350
New 대출금리 자동계산수식 여쭤봅니다 (2)
집중력귀신 | 2023.11.30 | 추천 0 | 조회 22
집중력귀신 2023.11.30 - 22
64340 함수/공식
New 셀 값을 변경하는 수식 사용 중에 작동이 안돼서 문의드립니다. 첨부파일 (4)
슈바츠론 | 2023.11.30 | 추천 0 | 조회 33
슈바츠론 2023.11.30 - 33
64333 함수/공식
New 실시간 데이터 연동 방법 좀 알려주실 수 있나요?? (2)
dfgkdflglkdf | 2023.11.30 | 추천 0 | 조회 45
dfgkdflglkdf 2023.11.30 - 45
64329 함수/공식
New IF와 VLOOKUP을 같이써서 처리를 해야하는 셀인데 어떻게 해야 맞는지 모르겠네요 ㅠㅠ... 첨부파일 (2) 답변완료
fkdn**** | 2023.11.29 | 추천 0 | 조회 60
fkdn**** 2023.11.29 - 60
64327 함수/공식
New 몇주째 도저히 모르겠습니다ㅜㅜ 일별/주간/월별 데이터 불러올 함수 알려주실분 꼭 부탁드립니다. 엑셀파일 (5) 답변완료
shin**** | 2023.11.29 | 추천 0 | 조회 88
shin**** 2023.11.29 - 88
64326 구글시트
New 엑셀이나 구글시트에서 특정 데이터를 입력하면 표시,금지 할수있는 방법을 알수있을까요 ? (3)
다운이남편 | 2023.11.29 | 추천 0 | 조회 41
다운이남편 2023.11.29 - 41
64325 함수/공식
New 엑셀함수관련 문의드립니다 기초적인부분이지만 해결방법이 궁금합니다 첨부파일 (3) 답변완료
gnsdlgns | 2023.11.29 | 추천 0 | 조회 50
gnsdlgns 2023.11.29 - 50
64320 파워쿼리/피벗
New 파워쿼리 엑셀 파일 불러오기 액세스 거부 ㅜㅠ 첨부파일 (2)
방글당근 | 2023.11.29 | 추천 0 | 조회 42
방글당근 2023.11.29 - 42
64317 VBA
New 집계함수를 반영하니 계산시간이 많이 걸립니다 다른방법이 없는지요 엑셀파일 (3)
슈토파이터 | 2023.11.29 | 추천 0 | 조회 63
슈토파이터 2023.11.29 - 63
64316 문서서식
New 조건부서식 하나가 막히는 데 도와주세요 첨부파일 (1)
수캄 | 2023.11.29 | 추천 0 | 조회 51
수캄 2023.11.29 - 51
64312 함수/공식
New 특정 텍스트 추출 엑셀파일첨부파일 (4)
ggplay**** | 2023.11.29 | 추천 0 | 조회 75
ggplay**** 2023.11.29 - 75
64311 함수/공식
New 함수 문의 첨부파일 (1)
비갠오후 | 2023.11.29 | 추천 0 | 조회 54
비갠오후 2023.11.29 - 54
64310 함수/공식
New 기간 중복을 제외하고 주당 사용 일수 계산 문의드립니다. 엑셀파일첨부파일 (2)
함수시르미 | 2023.11.29 | 추천 0 | 조회 30
함수시르미 2023.11.29 - 30