2016-09-19 170 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在線或gist來給你一些變化。 –

回答

1

我看不出您的代碼有什麼問題,您正在使用哪個Excel Office?

添加您的默認簽名試試這個

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 

而且不是使用vbNewLine嘗試& "<br>" &

3

Document not saved錯誤消息是線索的PDF文件不可寫,可能是因爲它是在您的PDF閱讀器中打開。如果在嘗試從VBA保存文檔時打開PDF文檔,我可以重複該錯誤。

如果您沒有打開文檔,則Windows有可能無意中在文件上留下了鎖。您可能需要重新啓動電腦才能清除鎖定。

如果該文件尚不存在,那麼您需要確認您是否可以在目錄位置創建文件。

你會遇到一個類似的錯誤,如果在V2值包含的字符,最終使文件名無效,如\/:*?"<>|

+0

ThunderFrame - 你知道了,我曾經無意中選擇了V2,當我選擇了V1時,它有一個日期。 /是罪魁禍首。感謝大家的幫助! – Steve

+1

好聽 - 不要忘記標記爲已回答。 – ThunderFrame