2014-07-18 50 views
0

Argh,Object不支持此屬性或方法錯誤438!Outlook:使用動態名稱附加文件

我還沒有試過,但我認爲它可能工作:

objFS.System.IO.Path.GetFileName(fileName) 
if objFS.System.IO.Path.GetFileName(fileName) = "VS12_WID1" Then 
fileName = AFile.Name 
getFileName = filePath & "/" & fileName 

我應該simplfy更然後嘗試重命名文件。

Sub AddAttachment() 
Dim myAttachments As Outlook.Attachments 
Dim getFile, fileName, filePath As String 


Set filePath = "F:\" 
Set fileName = "V_W_*_*_.pdf" 
Set getFile = "filePath" & "fileName" 
Set MyApp = CreateObject("Outlook.Application") 
Set myItem = MyApp.CreateItem(0) 
Set myAttachments = myItem.Attachments 

With myItem 
.To = "[email protected]" 
.CC = "" 
.Subject = "test" 
myAttachments.Add getFile 
.ReadReceiptRequested = False 
.HTMLBody = "Report(s) Attached" 
End With 
myItem.Send 
End Sub 

我得到一個編譯錯誤:對象需要突出Sub AddAttachment()和Set filePath。我感覺如此接近完成這項工作!

更新的代碼:

Sub AddAttachment() 
Dim myAttachments As Outlook.Attachments 
Dim getFileName, fileName, filePath As String 
Dim objFS: Set objFS = CreateObject("Scripting.FileSystemObject") 

Set filePath = "F:\" 
Set getFileName = filePath & fileName 
Set MyApp = CreateObject("Outlook.Application") 
Set myItem = MyApp.CreateItem(0) 
Set myAttachments = myItem.Attachments 

For Each fileName In filePath 
    If fcase(objFS.GetExtensionName(fileName)) = "VS111111_WID111A" Then 
     fileName = "VS111111_WID111A.pdf" 
     Exit For 
    End If 
Next 

With myItem 
.To = "[email protected]" 
.CC = "" 
.Subject = "" 
myAttachments.Add getFileName 
.ReadReceiptRequested = False 
.HTMLBody = "Report(s) Attached" 
End With 
myItem.Send 
End Sub 

我有足夠的知識來讀劇本,瞭解正在發生的事情。我所做的代碼只能找到一個固定的文件名。如何使文件名變爲動態?

Sub AddAttachment() 
Dim myAttachments As Outlook.Attachments 
Set MyApp = CreateObject("Outlook.Application") 
Set myItem = MyApp.CreateItem(0) 
Set myAttachments = myItem.Attachments 

With myItem 
.To = "[email protected]" 
.CC = "[email protected]" 
.Subject = "" 
myAttachments.Add "F:\constantFilenameHas8char_constantFilenameHas7char_variableHas5Int_todaysModifiedDate_variableHas6Int.pdf" 
.ReadReceiptRequested = False 
.HTMLBody = "Report(s) Attached" 
End With 
myItem.Send 
End Sub 

回答

0

您的查詢並不是你想如何使用 變量的filename.Think,當你需要傳遞的文件路徑和名稱明確。


暗淡FileToAttach作爲字符串
FileToAttach = 「文件路徑」 & 「文件名」
myAttachments.Add FileToAttach


對於更新後的代碼
子AddAttachment()
昏暗myAttachments作爲Outlook.Attachments
Dim getFileName,filename
Dim filePath As Object
Dim objFS As FileSystemObject的
集OBJFS =新FileSystemObject的
設置文件路徑= objFS.GetFolder( 「C:\用戶\迪內希\桌面\」)
設置MyApp的=的CreateObject( 「Outlook.Application」)
設置myItem = MyApp.CreateItem (0)
集myAttachments = myItem.Attachments
對於每個å文件在filePath.Files
Debug.Print用Ucase(objFS.GetExtensionName(文件名))
如果用Ucase(objFS.GetExtensionName(å文件))= 「PDF」然後
fileName = AFile.Name
=的getFileName文件路徑& 「/」 &文件名
退出對於
結束如果
接着
隨着myItem
。爲了= 「」
.CC = 「」
.Subject = 「」
myAttachments。添加的getFileName
.ReadReceiptRequested =假
.HTMLBody =
。顯示 「附報告(S)」以 結尾
'myItem。發送
末次

+0

我測試了這一點,它只是重視具有擴展名「PDF」的第一個文件。我將繼續嘗試創建代碼來搜索具有特定命名約定的文件。 – mrgrm00

+0

甜美!我可以使用GetFileName或GetFileNameWithoutExtension方法方法!好極了! – mrgrm00

+0

我也可以用你當前的代碼做一些工作!非常感謝! – mrgrm00