Results 1 to 40 of 54

Thread: Import E-Mails from Outlook to Access, and read them from Access?

Threaded View

  1. #26
    Ex-Super Mod RobDog888's Avatar
    Join Date
    Apr 2001
    Location
    LA, Calif. Raiders #1 AKA:Gangsta Yoda™
    Posts
    60,709
    Last third.
    VB Code:
    1. Private Function Outlook_Tasks_2_Access()
    2. '   <GORS = ACCESS>
    3.     On Error GoTo No_Bugs
    4.  
    5.     Dim goRs As ADODB.Recordset
    6.    
    7.     Dim oTask As Outlook.TaskItem
    8.     Dim oTaskReqAccpt As Outlook.TaskRequestAcceptItem
    9.     Dim oTaskReqDcln As Outlook.TaskRequestDeclineItem
    10.     Dim oTaskReqItm As Outlook.TaskRequestItem
    11.     Dim oTaskReqUpd As Outlook.TaskRequestUpdateItem
    12.    
    13.     Dim vType As Variant
    14.    
    15.     Dim i As Integer
    16.     Dim ii As Integer
    17.     Dim iii As Integer
    18.    
    19.     Dim sAttachment As String
    20.     Dim sRecipients As String
    21.    
    22.     Dim sSQL As String
    23.    
    24.     Set goRs = New ADODB.Recordset
    25.    
    26.     sSQL = "SELECT * FROM [Tasks] WHERE 1=2;"
    27.     goRs.Open sSQL, CnnA, adOpenKeyset, adLockOptimistic, adCmdText
    28.    
    29.     prbProgress.Max = oTasks.Items.Count
    30.     i = 1
    31.     Do While i <= oTasks.Items.Count
    32.         DoEvents
    33.         Select Case oTasks.Items(i).Class
    34.             Case olTask
    35.                 vType = "Task"
    36.             Case olTaskRequestAccept
    37.                 vType = "TaskReqAccpt"
    38.             Case olTaskRequestDecline
    39.                 vType = "TaskReqDcln"
    40.             Case olTaskRequest
    41.                 vType = "TaskReqItm"
    42.             Case olTaskRequestUpdate
    43.                 vType = "TaskReqUpd"
    44.         End Select
    45.         If vType = "Task" Then 'ONLY TASK TYPES
    46.             Set oTask = oTasks.Items(i)
    47.             If FindOutlookTask(oTask.EntryID) = False Then
    48.                 'ADDED FOR TESTING ONLY SO YOU CAN SEE HOW TO PASS THE ITEMS.
    49.                 'TAKE OUT AND PLACE WHERE YOU ARE CALLING IT FROM
    50.                 'OTHERWISE IT WILL OPEN ALL EXPORTED TASKS
    51.                 Call OpenOutlookTask(oTask.EntryID, CStr(oTasks.Items(i).Class))
    52.                 goRs.AddNew
    53.                 goRs!To = oTask.Recipients.Item(0).Name
    54.                 sRecipients = ""
    55.                 For iii = 1 To oTask.Recipients.Count - 1
    56.                     sRecipients = sRecipients & oTask.Recipients.Item(iii).Name & "; "
    57.                 Next
    58.                 goRs!CC = sRecipients
    59.                 goRs!Subject = oTask.Subject
    60.                 goRs!Body = oTask.Body           'PLAIN TEXT BODY NOTES
    61.                 goRs!Importance = oTask.Importance
    62.                 goRs!StartDate = oTask.StartDate
    63.                 goRs!Class = oTask.Class 'TASK, TASKREQUESTACCEPT, TASKREQUESTDECLINE, ETC.
    64.                 goRs!ReceivedByName = oTask.ReceivedByName
    65.                 goRs!EntryID = oTask.EntryID
    66.                 If oTask.Attachments.Count > 1 Then
    67.                     'LOOP THROUGH ALL ATTACHMENTS SAVING TO DIRECTORY AND ENTERING FILENAME INTO FIELD
    68.                     For ii = 1 To oTask.Attachments.Count
    69.                         'DETERMINE ATTACHMENT CLASS TYPE ATTACHED, LINKED, EMBEDDED, OR OLE
    70.                         If oTask.Attachments.Item(ii).Type = olByValue Or oTask.Attachments.Item(ii).Type = olEmbeddeditem Then
    71.                             oTask.Attachments.Item(ii).SaveAsFile "C:\MyOutlookEmailExport\Attachments\" & oTask.Attachments.Item(ii).FileName
    72.                             sAttachment = sAttachment & "C:\MyOutlookEmailExport\Attachments\" & oTask.Attachments.Item(ii).FileName & vbNewLine
    73.                         End If
    74.                     Next
    75.                     goRs!Attachment = sAttachment
    76.                 Else
    77.                     goRs!Attachment = "None"
    78.                 End If
    79.                 'CONTINUE ON WITH OTHER FIELD YOU WANT
    80.                 '...
    81.                 goRs.Update
    82.             End If
    83.             Set oTask = Nothing
    84.         'MORE CODE GOES HERE FOLOWING SAME LOGIC
    85.         'ElseIf
    86.        
    87.         'ElseIf
    88.         'etc.
    89.         End If
    90.  
    91.  
    92. End Function
    93.  
    94. Private Function FindOutlookTask(ByVal oTaskEntryID As String) As Boolean
    95.  
    96.     Dim oRsAccessTask As ADODB.Recordset 'TASK IN ACCESS TO CHECK AGAINST
    97.    
    98.     Dim i As Integer
    99.    
    100.     Set oRsAccessTask = New ADODB.Recordset
    101.     oRsAccessTask.Open "SELECT EntryID FROM Tasks WHERE EntryID = '" & oTaskEntryID & "';", CnnA, adOpenKeyset, adLockReadOnly, adCmdText
    102.     If oRsAccessTask.BOF = True And oRsAccessTask.EOF = True Then
    103.         FindOutlookTask = False
    104.     Else
    105.         FindOutlookTask = True
    106.     End If
    107.     Set oRsAccessTask = Nothing
    108.  
    109. End Function
    110.  
    111. Private Function OpenOutlookTask(ByVal oTaskEntryID As String, sType As String)
    112. 'PASS THE .ENTRYID AND THE .TYPE PROPERTY OF THE OUTLOOK ITEM
    113.     On Error GoTo No_Bugs
    114.    
    115.     Dim oOBJ As Object
    116.     Dim oItem As Object
    117.     Dim i As Integer
    118.     Dim bFound As Boolean
    119.    
    120.     'CHECK EACH ITEMS ENTRYID PROPERTY FOR A MATCH (.FIND NOT COMPATIBLE WITH .ENTRYID PROPERTY)
    121.     bFound = False
    122.     For i = 1 To oInbox.Items.Count
    123.         Set oItem = oTasks.Items(i)
    124.         If oItem.EntryID = oEmailEntryID Then
    125.             bFound = True
    126.             Exit For
    127.         Else
    128.             bFound = False
    129.         End If
    130.         Set oItem = Nothing
    131.     Next
    132.    
    133.     If bFound = True Then
    134.         Select Case CLng(sType)
    135.             Case olTask
    136.                 sType = "Task"
    137.             Case olTaskRequestAccept, olTaskRequestDecline, olTaskRequest, olTaskRequestUpdate
    138.                 sType = "TaskItem"
    139.             Case Else
    140.                 sType = ""
    141.         End Select
    142.         Select Case sType
    143.             Case "Task", "TaskItem"
    144.                 Set oOBJ = oTasks.Items(i)
    145.                 If TypeName(oOBJ) <> "Nothing" Then
    146.                     oOBJ.Display 'THE USE CAN MAKE CHANGES AND SAVE THEM TO OUTLOOK
    147.                 Else
    148.                     MsgBox sType & " not found in Outlook!", vbOKOnly + vbExclamation
    149.                 End If
    150.             Case Else
    151.                 MsgBox "Invalid Outlook Item Type Passed!", vbOKOnly + vbCritical
    152.         End Select
    153.     Else
    154.         MsgBox "Item not found in Outlook!", vbOKOnly + vbInformation
    155.     End If
    156.     Exit Function
    157.    
    158. No_Bugs:
    159.  
    160.     MsgBox Err.Number & " = " & Err.Description, vbOKOnly + vbExclamation
    161.     Exit Function
    162.     Resume
    163. End Function
    Last edited by RobDog888; Oct 16th, 2003 at 03:49 PM.
    VB/Office Guru™ (AKA: Gangsta Yoda®)
    I dont answer coding questions via PM. Please post a thread in the appropriate forum.

    Microsoft MVP 2006-2011
    Office Development FAQ (C#, VB.NET, VB 6, VBA)
    Senior Jedi Software Engineer MCP (VB 6 & .NET), BSEE, CET
    If a post has helped you then Please Rate it!
    Reps & Rating PostsVS.NET on Vista Multiple .NET Framework Versions Office Primary Interop AssembliesVB/Office Guru™ Word SpellChecker™.NETVB/Office Guru™ Word SpellChecker™ VB6VB.NET Attributes Ex.Outlook Global Address ListAPI Viewer utility.NET API Viewer Utility
    System: Intel i7 6850K, Geforce GTX1060, Samsung M.2 1 TB & SATA 500 GB, 32 GBs DDR4 3300 Quad Channel RAM, 2 Viewsonic 24" LCDs, Windows 10, Office 2016, VS 2019, VB6 SP6

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width