2015-07-28 2 views
1

Я хочу создать Excel VBA с указанными ниже критериями:Поиск файла PDF в каталоге и отправить с Outlook Mail

Поиск PDF файлов с именами, упомянутыми в колонке A1, A2, ... несколько ... в каталог и если он найден, отправьте этот файл через Outlook с поисковым вложением файла. Если файл не найден, проигнорируйте этот файл и перейдите к следующему файлу.

Ниже VBA я получил показывает ошибку «Тип несовпадение» в Pfile = Pfile + 1 и цикл не выполняется. Дайте мне знать, где я буду не так.

Sub CheckandSend() 
Dim obMail As Outlook.MailItem 
Dim irow As Integer 
Dim dpath As String 
Dim pfile As String 

`'' directory that contains files 

`dpath = "xxxx" 

`'' loop through all files and send mail 

irow = 1 

Do While Cells(irow, 1) <> Empty 

'' get file name in column A 
pfile = Dir(dpath & "\*" & Cells(irow, 1) & "*") 
'' check file exist and pdf file 
If pfile <> "" And Right(pfile, 3) = "pdf" Then 
    Set obMail = Outlook.CreateItem(olMailItem) 

    With obMail 
     .To = "[email protected]" 
     .Subject = "123" 
     .BodyFormat = olFormatPlain 
     .Body = "123" 
     .Attachments.Add (dpath & "\" & pfile) 
     .Send 
    End With 
    End If 
pfile = pfile + 1 
Loop 
End Sub 
+1

Pfile файл, вы не можете увеличивать файл с +1, вероятно, вы хотите, чтобы увеличить IRow вместо ... –

ответ

0

pfile - это строка. Итак, если вам нужно объединить строки, вам нужно вместо этого использовать символ &.

Скорее всего, вам необходимо увеличить количество клеток, как показано ниже:

Do While Cells(irow, 1) <> Empty 

'' get file name in column A 
pfile = Dir(dpath & "\*" & Cells(irow, 1) & "*") 
'' check file exist and pdf file 
If pfile <> "" And Right(pfile, 3) = "pdf" Then 
    Set obMail = Outlook.CreateItem(olMailItem) 

    With obMail 
    .To = "[email protected]" 
    .Subject = "123" 
    .BodyFormat = olFormatPlain 
    .Body = "123" 
    .Attachments.Add (dpath & "\" & pfile) 
    .Send 
    End With 
End If 
irow = irow + 1 
Loop 
+0

Это отлично поработало .. Спасибо! Также есть способ, которым он также может дать мне количество найденных файлов. Могут быть дублированные файлы с таким же именем. – Striker

+0

Также приведенный выше код выполняет поиск только в одной папке, а не внутри, если путь имеет несколько подпапок. Его можно изменить для поиска в нескольких подпапках. – Striker

Смежные вопросы