我正在尝试编写一段代码,将其中的所有文件刮入一个目录,并且仅附加最新修改的文件。
虽然我有将附加文件的代码,但正是我在努力的那个代码的改编,并觉得自己犯了一些简单的错误。
我从本质上像这样的代码开始
Dim JobLocation As String
JobLocation = InputBox("What is the Clients Name ?")
ClientDirectory = "S:\Client Folder\" & JobLocation & "\Site Drawings\"
RequiredPDFs = Dir(ClientDirectory & "*.pdf")
Do While Len(RequiredPDFs) > 0
.Attachments.Add ClientDirectory & RequiredPDFs
RequiredPDFs = Dir
Loop
这一切似乎很好。
问题是我想修改代码以查找上次修改的文件,并且只附加一次罚款。
Sub Test()
Dim JobLocation As String
Dim objFile As Object
Dim dLastModifiedDate As Date
Dim strLastModifiedFilePath As String
Dim objMail As Outlook.MailItem
Dim ClientDirectory As Object
JobLocation = InputBox("What is the Clients Name ?")
ClientDirectory = "S:\Client Folder\" & JobLocation & "\Site Drawings\"
If ClientDirectory.Files.Count > 0 Then
For Each objFile In ClientDirectory.Files
If (objFile.DateLastModified > dLastModifiedDate) Then
strLastModifiedFilePath = objFile.Path
dLastModifiedDate = objFile.DateLastModified
End If
Next
If strLastModifiedFilePath <> "" Then
Set objMail = Outlook.Application.ActiveInspector.CurrentItem
objMail.Attachments.Add strLastModifiedFilePath
End If
End If
End Sub
我希望它能做到这一点,并逐个爬网,将其与下一个文件进行比较,然后仅附加上一个LastModified。
最终发生的事情是它引发了以下错误:
'运行时错误'91':对象变量或未设置块变量'
感谢大家的帮助,因为我要疯了。
您将变量ClientDirectory视为对象,但是在原始代码中,它是一个简单的字符串。这就是为什么您的行:
ClientDirectory = "S:\Client Folder\" & JobLocation & "\Site Drawings\"
失败。
[您还错过了在Dir操作中使用此变量的操作,该操作将其结果存储在requiredPDFs变量中。那就是包含文件名的变量。]>