2017-04-20 33 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

相关问题