2017-04-20 14 views
0

誰かが私が間違っていることを教えてもらえますか?私はVBAにはかなり新しく、次のコードがあります。私はいくつかのExcelファイルを開き、 "Cash"タブをpdfとして特定のフォルダに保存します。私が抱えている問題は、 "Tests"フォルダに保存し、 "Cells(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 - LOL - 私は10kに近づくための答えを "最速の指"にしたかったので、最初に最小限の修正を行い、その後整理しました。私はそれを修正しなければ私を悩ますであろう非正規の 'Sheets'参照を整理するのが良いでしょう。 – YowE3K

関連する問題