เครื่องทั้งสองเครื่องใช้งาน Windows 7 เวอร์ชัน 64 บิตโครงการนี้ได้รับการรวมเข้าด้วยกันอย่างเจ็บปวดฉันไม่ใช่โปรแกรมเมอร์
ฟังก์ชั่นของโครงการคือค้นหาอีเมลสำหรับสิ่งที่แนบมาโดยอัตโนมัติเมื่อมีการเตือนให้ตั้งไฟทุกคืนและดาวน์โหลดไฟล์แนบไปยังเส้นทางที่ระบุที่มีสตริงที่กำหนดโดยpos
รหัสสองบรรทัดเท่านั้น โดยทั่วไปมันแค่ตรวจสอบว่าชื่อไฟล์มีชื่อ / วลีที่ต้องการ ไฟล์ที่ฉันใช้งานมีการเปลี่ยนแปลงเล็กน้อยกับอีเมลทุกฉบับและในช่วงหลายปีที่ผ่านมา แต่มีคำสั่งเดียวเสมอ หากเมลเดิมunRead
มันจะทำเครื่องหมายว่าเป็นread
ไฟล์แนบทั้งหมดในแต่ละอีเมล
ข้อแตกต่างเพียงอย่างเดียวคือเครื่องที่ใช้ Outlook 2010 จะมีรหัสอื่นที่ทำงานอยู่ ฉันวางรหัสนี้บนเครื่องกับ Outlook 2013 เพื่อดูว่ามันขัดแย้งกันหรือไม่ แต่มันก็ยังทำงานได้อย่างสมบูรณ์
รหัสต่อไปนี้ทำงานได้อย่างสวยงามบนเครื่องด้วย Outlook 2013 แต่ไม่ได้อยู่ในเครื่องด้วย Outlook 2010 โครงการคอมไพล์ได้ดีruns
แต่ไม่ดาวน์โหลดไฟล์ใด ๆ หรือทำเครื่องหมายอีเมลใด ๆ ว่ายังไม่ได้อ่าน
นี่คือรหัสใน This Outlook Session
Private WithEvents MyReminders As Outlook.Reminders
Private Sub Application_Startup()
Set MyReminders = GetOutlookApp.Reminders
End Sub
Function GetOutlookApp() As Outlook.Application
' returns reference to native Application object
Set GetOutlookApp = Outlook.Application
End Function
Private Sub MyReminders_ReminderFire(ByVal ReminderObject As Reminder)
'On Error GoTo ErrorHandler
If ReminderObject.Caption = "Daily Report" Then
ReminderObject.Dismiss
Daily_Report
End If
If ReminderObject.Caption = "Shutdown Outlook" Then
ReminderObject.Dismiss
Application.Quit
End If
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Sub
และนี่คือรหัสที่ฉันมีModule1
นี่เป็นเพียงเพราะรหัสที่มีอยู่แล้วในเครื่องอื่น ฉันรู้ว่ามันไม่จำเป็นต้องอยู่ในโมดูล
นี่มันคือ:
Sub Daily_Report()
' This Outlook macro checks a the Outlook Inbox for messages
' with attached files (of any type) and saves them to disk.
' NOTE: make sure the specified save folder exists before
' running the macro.
On Error GoTo GetAttachment_err
' Declare variables
Dim ns As NameSpace
Dim Inbox As MAPIFolder
Dim Item As Object
Dim Atmt As Attachment
Dim FileNameXLS As String
Dim FileNamePDF As String
Dim posXLS As Integer
Dim posPDF As Integer
Set ns = GetNamespace("MAPI")
Set Inbox = ns.GetDefaultFolder(olFolderInbox)
' Check each message for attachments
For Each Item In Inbox.Items
' Save any attachments found
If Item.UnRead = True Then
For Each Atmt In Item.Attachments
posXLS = InStr(Atmt.FileName, "FINAL EXCEL")
posPDF = InStr(Atmt.FileName, "Final PDF")
If posXLS <> 0 And (Right(Atmt.FileName, 4) = ".xls") Or posXLS <> 0 And (Right(Atmt.FileName, 5) = ".xlsx") Then
FileNameXLS = "C:\Users\ba\Downloads\Babcok Lab Reports\Babcock Excel\" & Atmt.FileName
Atmt.SaveAsFile FileNameXLS
End If
If posPDF <> 0 And (Right(Atmt.FileName, 4) = ".pdf") Then
FileNamePDF = "C:\Users\ba\Downloads\Babcok Lab Reports\Babcock PDF\" & Atmt.FileName
Atmt.SaveAsFile FileNamePDF
End If
Next Atmt
Item.UnRead = False
End If
Next Item
' Clear memory
GetAttachment_exit:
Set Atmt = Nothing
Set Item = Nothing
Set ns = Nothing
Exit Sub
' Handle errors
GetAttachment_err:
MsgBox "An unexpected error has occurred." _
& vbCrLf & "Please note and report the following information." _
& vbCrLf & "Macro Name: GetAttachments" _
& vbCrLf & "Error Number: " & Err.Number _
& vbCrLf & "Error Description: " & Err.Description _
, vbCritical, "Error!"
Resume Next
End Sub
Public Sub saveAttachtoDisk(itm As Outlook.MailItem) Dim objAtt As Outlook.Attachment Dim saveFolder As String saveFolder = "c:\temp" For Each objAtt In itm.Attachments objAtt.SaveAsFile saveFolder & "\" & objAtt.DisplayName Set objAtt = Nothing Next End Sub