2017-04-20 38 views
0

是否有人可以告訴我我做錯了什麼,我對VBA非常陌生,並且具有以下代碼。我想打開幾個excel文件並將「現金」選項卡保存爲特定文件夾的pdf。我遇到的問題是,它試圖將文件夾保存到「測試」文件夾,而不是「單元格(r,3)」指示的文件夾,因此在保存第一個PDF文件後出現錯誤,因爲它們具有一樣的名字。任何幫助,將不勝感激!如何使用VBA保存位置和名稱爲單元格值的文件

Sub Cash_PDF_() 

r = 2 

Do While Cells(r, 5) <> "" 

Workbooks.Open FileName:="H:\Investment\Fund Folders\" & Cells(r, 3) & "\" & Cells(r, 5), _ 
ReadOnly:=True, UpdateLinks:=0 

Sheets("Cash").Select 
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:="C:\Users\Desktop\Test\" & Cells(r, 3) & "\Cash.pdf", _ 
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True 

ActiveWindow.Close SaveChanges:=False 

r = r + 1 

Loop 

End Sub 

回答

2

Cells,不合格時,指的是活性片。您更改活動工作表,因此它不是指您想要的內容。

Sub Cash_PDF_() 
    Dim ws As Worksheet 
    Dim wb As Workbook 
    Dim r As Long 
    Set ws = ActiveSheet 

    r = 2 

    Do While ws.Cells(r, 5) <> "" 

     Set wb = Workbooks.Open(FileName:="H:\Investment\Fund Folders\" & ws.Cells(r, 3) & "\" & ws.Cells(r, 5), _ 
         ReadOnly:=True, UpdateLinks:=0) 

     wb.Sheets("Cash").ExportAsFixedFormat _ 
         Type:=xlTypePDF, _ 
         FileName:="C:\Users\Desktop\Test\" & ws.Cells(r, 3) & "\Cash.pdf", _ 
         Quality:=xlQualityStandard, _ 
         IncludeDocProperties:=True, _ 
         IgnorePrintAreas:=False, _ 
         OpenAfterPublish:=True 

     wb.Close SaveChanges:=False 

     r = r + 1 

    Loop 

End Sub 
+0

非常感謝! – Jason

+0

這些不合格的電話是一個不合格的電話... @Jason你可能想給[Rubberduck](http://rubberduckvba.com)一個嘗試(我大量參與該OSS項目),它可以幫助你找到這些問題(和更多)。 –

+0

@ A.S.H - 大聲笑 - 我想「最快的手指」的答案接近我的10K =所以最小修補程序,然後整理。現在我最好整理一下不合格的'Sheets'參考文獻 - 如果我不修復它,這會讓我煩惱。 – YowE3K

相關問題