2016-09-19 4 views
3

필자는 Excel 시트를 PDF로 저장하고 이그 제 큐 티브 팀에게 이메일로 보내는 매크로를 성공적으로 실행했습니다.런타임 오류 '1004'문서가 저장되지 않았습니다.

새로운 시트를 작성하여이를 다시 디자인하고 그에 따라 코드를 업데이트했습니다.

Sub NewDashboardPDF() 

' New Executive Daily Dashboard Macro 
' 
' Create and email the Executive TEAM the Daily Dashboard. 
    Dim strPath As String, strFName As String 
    Dim OutApp As Object, OutMail As Object 

' Create and email the Daily Report to Mitch/Dave/John/Jason ALL PAGES. 
    Sheets("Executive Dashboard").Select 
    strPath = Environ$("temp") & "\" 'Or any other path, but include trailing "\" 
    strFName = Worksheets("Executive Dashboard").Range("V2").Value & " " & Format(Date, "yyyymmdd") & ".pdf" 

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
     strPath & strFName, Quality:=xlQualityStandard, _ 
     IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 

    'Set up outlook 
    Set OutApp = CreateObject("Outlook.Application") 
    Set OutMail = OutApp.CreateItem(0) 
    'Create message 
    On Error Resume Next 
    With OutMail 
     .to = [email protected] 
     .CC = "[email protected]" 
     .BCC = "" 
     .Subject = "Daily Dashboard" 
     .Body = "All, " & vbNewLine & vbNewLine & _ 
         "Please see the attached daily dashboard." & vbNewLine & _ 
         "If you have any questions or concerns, please do not hesitate to contact me." & vbNewLine & _ 
         "Steve" 
     .Attachments.Add strPath & strFName 
     .Display 
     .Send 
    End With 
    'Delete any temp files created 
    Kill strPath & strFName 
    On Error GoTo 0 

End Sub 

오류 메시지는 '런타임 오류'1004 '문서가 저장되지 않았습니다. 문서가 열려 있거나 오류가 발생할 수 있습니다.

디버깅 할 때 다음 섹션이 마지막 줄의 화살표로 강조 표시됩니다.

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
strPath & strFName, Quality:=xlQualityStandard, _ 
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 

이전 시트에 대한 모든 참조가 새 것으로 업데이트되었으므로 그 것이 문제가 아닙니다.

다른 기본 정보에 포함 된 기본 전자 메일 서명을 사용하여이 전자 메일을 만드는 방법을 알고 싶습니다. 현재는 일반 텍스트 이메일 형식으로되어 있습니다.

+0

코드에 아무런 문제가 없으므로 Excel Office를 변경 했습니까? – 0m3r

+0

충돌했을 때'strPath'와'strFName'의 값은 무엇입니까? 그들이 당신이 기대했던 것 이었습니까? – YowE3K

+0

아주 기본적인 소스 코드 컨트롤조차도 도움이되는 상황입니다. 코드가 작동 할 때의 코드가 무엇인지, 그 코드가 맞지 않았다면 추측하기보다는 정확히 무엇이 다른지를 볼 수 있습니다. 컴퓨터에 scc가 없으면 github 온라인 또는 요지를 사용하여 다양한 변경 사항을 제공 할 수 있습니다. –

답변

1

코드에 아무런 이상이없는 것 같습니다. 어떤 Excel Office를 사용하고 있습니까?

는 아마 때문에, 기본 서명 대신 vbNewLine가 Document not saved 오류 메시지가 PDF 파일이없는 쓸 수 있다는 단서입니다 & "<br>" &

3

하려고 사용하는 또한이

Dim Signature As String 

    With OutMail 
     .Display 
    End With 

    Signature = OutMail.HTMLBody 

    'Create message 
    On Error Resume Next 
    With OutMail 
     .To = "[email protected]" 
     .CC = "[email protected]" 
     .BCC = "" 
     .Subject = "Daily Dashboard" 
     .HTMLBody = "All, " & vbNewLine & vbNewLine & _ 
         "Please see the attached daily dashboard." & vbNewLine & _ 
         "If you have any questions or concerns, please do not hesitate to contact me." & vbNewLine & _ 
         "Steve" & vbNewLine & Signature 
     .Attachments.Add strPath & strFName 
     .Display 
'  .Send 
    End With 

을 시도 추가 PDF 리더에서 엽니 다. VBA에서 문서를 저장하는 동안 PDF 문서를 열어두면 오류가 반복 될 수 있습니다.

문서를 열지 않은 경우 Windows에서 우연히 파일을 잠근 경우가 있습니다. 잠금을 해제하려면 PC를 다시 시작해야합니다.

파일이 아직 존재하지 않으면 실제로 디렉토리 위치에 파일을 만들 수 있는지 확인해야합니다. V2의 값은 \, /, :, *, ?, ", <, > 또는 | 궁극적으로 파일 이름이 유효하게 문자가 포함 된 경우

당신은 유사한 오류가 발생합니다.

+0

ThunderFrame - 당신이 그것을 가지고, 나는 실수로 V1을 선택 했어야 할 때 날짜가있는 V2를 선택했습니다./그 범인이었다. 도와 주신 모든 분들께 감사드립니다! – Steve

+1

듣기 좋게 - 답변으로 표시하는 것을 잊지 마십시오. – ThunderFrame

관련 문제