2017-10-19 39 views
-1

我的Do While循環意味着遍歷目錄中的所有文件,但它只能看到一個文件。「儘管」代碼不循環目錄 - 只能看到一個文件

For x = 2 To ActiveWorkbook.Sheets("NumNF").Range("a1") 

    numb_nota = ThisWorkbook.Sheets("controle").Range("C" & x).Value 
    Name = "Nota Fiscal P&G número " & Left(numb_nota, 9) & ".PDF" 

    Directory = "C:\Users\andrade.br\Documents\Test\" 
    Filename = Dir(Directory & "*.PDF") 

    Do While Filename <> "" 

     If Name = Filename Then 

      .Attachments.Add Directory & Filename 
     End If 

    Loop 
Next 

我做錯了什麼?

+0

謝謝你幫我,我用循環的文件夾中幾個PDF文件,你是對的,我只是錯過了'Filename = Dir()'=)。 –

+0

你不需要循環 - 對於'x'的每個值,你只是循環以確保**單個**文件存在,因此只處理該單個文件。 – YowE3K

回答

2

您的循環只能看到一個文件,因爲您只執行Dir一次(獲取第一個文件)。要使循環正常工作,您需要設置Filename = Dir()以檢索下一個文件。

For x = 2 To ActiveWorkbook.Sheets("NumNF").Range("a1") 

    numb_nota = ThisWorkbook.Sheets("controle").Range("C" & x).Value 
    Name = "Nota Fiscal P&G número " & Left(numb_nota, 9) & ".PDF" 

    Directory = "C:\Users\andrade.br\Documents\Test\" 
    Filename = Dir(Directory & "*.PDF") 

    Do While Filename <> "" 

     If Name = Filename Then 

      .Attachments.Add Directory & Filename 
     End If 
     Filename = Dir() ' retrieve the next file name 
    Loop 
Next 

但是,因爲你永遠只處理一個文件,該代碼可以大大簡化爲:

Directory = "C:\Users\andrade.br\Documents\Test\" 
For x = 2 To ActiveWorkbook.Sheets("NumNF").Range("a1") 
    numb_nota = ThisWorkbook.Sheets("controle").Range("C" & x).Value 
    Filename = Directory & "Nota Fiscal P&G número " & Left(numb_nota, 9) & ".PDF" 

    If Dir(Filename) <> "" Then 
     .Attachments.Add Filename 
    End If 
Next 
+0

謝謝@ YowE3K,我只是想念我的代碼中的Filename - Dir ...現在它能正常工作......謝謝! –

+0

@BrunoWilsondeAndrade嗨布魯諾 - 如果您覺得這個答案足夠了,您應該點擊帖子旁邊的灰色複選標記,將其標記爲正確答案。 – dwirony

+0

對不起。我不知道我應該點擊那個勾號! –