2015-11-06 122 views
0

請幫我編輯這段代碼。我有一個Excel工作簿,我需要將它保存在我選擇的文件夾中作爲xlsm文件和PDF。在我的電子表格中添加需要輸入的所有信息以便將範圍用作參考並選擇文件保存的文件夾之後,然後出現消息框「Kon nie document stoor nie。」。彈出。如果它保存成功只有消息框「複製Gemaak」需要顯示! 感謝您的幫助!兩個消息框返回

Sub Combined() 

    Dim ws As Worksheet 
    Dim strPath As String 
    Dim myFile As Variant 
    Dim strFile As String 
    Dim fileSaveName As String 
    On Error GoTo errHandler 

    fileSaveName = Application.GetSaveAsFilename("Kwotasie - " &  Range("H14").Value) 
    If VarType(fileSaveName) = vbBoolean Then Exit Sub 


    ' Save as XLSM 
    ActiveWorkbook.SaveAs Filename:=fileSaveName & ".xlsm", FileFormat:= _ 
    xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False 

    ' Save as PDF 
    Range("a1:I51").ExportAsFixedFormat Type:=xlTypePDF, Filename:=fileSaveName _ 
     , Quality:= _ 
     xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _  
     OpenAfterPublish:=False 

     If myFile <> "False" Then 
     ws.ExportAsFixedFormat _ 
      Type:=xlTypePDF, _ 
      Filename:=myFile, _ 
       Quality:=xlQualityStandard, _ 
      IncludeDocProperties:=True, _ 
      IgnorePrintAreas:=False, _ 
       OpenAfterPublish:=False 

      MsgBox "Copy gemaak." 

     End If 

     exitHandler: 
      Exit Sub 
     errHandler: 
     MsgBox "Kon nie dokumente stoor nie." 
      Resume exitHandler 

End Sub 

回答

0

如果我正確地讀你的問題,你的問題是,你的宏永遠只顯示MsgBox爲「昆聶dokumente stoor聶」。

假設這是正確的,有點難以分辨出因爲你的VBA是混亂的一面。最好的猜測是,因爲您從未設置ws,所以保存工作表的嘗試調用errHandler

一些清理你想要在這種情況下,要做到:

  1. 你應該聲明和使用FileSaveName爲字符串。如果有什麼辦法可以將它設置爲布爾值,那麼可能會發生一些奇怪的現象(至少根據您迄今爲止所告訴我們的情況)。
  2. 擺脫Exit Handler。它使用的唯一地方是,如果你把它做到ErrHandler。如果發生這種情況,代碼末尾的End Sub會將事情關閉,沒有必要使用Exit Sub
  3. 添加End If你的第一個If
  4. 使用縮進顯示什麼代碼依賴於If聲明

要闡述我的回答後,鑑於以上所述,我有點在黑暗中刺傷,但它看起來像myFile應該永遠不應該是"False"if應鑄myFile字符串,並且因爲該變量從未設置它的值是"")。所以在這種情況下,嘗試使用PDF保存ws,並且因爲ws也從未設置,所以失敗,這意味着Excel不知道要保存的內容。因此你被踢到errHandler

希望有所幫助。如果沒有,請詳細說明您所看到的行爲,如果可能,請使用清理後的代碼更新原始問題。