I have about 17 thousand emails containing orders, news, contacts, etc., which returned 11 years ago.
User email addresses were encrypted to stop scanners and spam by changing @
to *@
* or 'at
.
I am trying to create a macro to view emails and create a comma delimited list so that we can create a database of our users.
This is not my past work, by the way, I just got a joyful task to see if we can get all the data from these old letters.
I know that the code below works with file writing and folder cyclization, because if I write the senders email address to the file in which I now use the body of the letter, then it prints fine.
The problem I encountered is that Replaces are not working. They do not change *at*
etc. On @
.
First of all, why not, and secondly, the best way for me to do this as a whole?
current code
Private Sub Form_Load() Dim objOutlook As New Outlook.Application Dim objNameSpace As Outlook.NameSpace Dim objInbox As MAPIFolder Dim objFolder As MAPIFolder Dim fldName As String fldName = "TEST" ' Get the MAPI reference Set objNameSpace = objOutlook.GetNamespace("MAPI") ' Pick up the Inbox Set objInbox = objNameSpace.GetDefaultFolder(olFolderInbox) 'Loop through the folders under the Inbox For Each objFolder In objInbox.Folders RecurseFolders fldName, objFolder Next objFolder End Sub Public Sub RecurseFolders(targetFolder As String, currentFolder As MAPIFolder) If currentFolder.Name = targetFolder Then GetEmails currentFolder Else Dim objFolder As MAPIFolder If currentFolder.Folders.Count > 0 Then For Each objFolder In currentFolder.Folders RecurseFolders targetFolder, objFolder Next End If End If End Sub Sub WriteToATextFile(e As String) MyFile = "c:\" & "emailist.txt" 'set and open file for output fnum = FreeFile() Open MyFile For Append As fnum Print #fnum, e; "," Close #fnum End Sub Sub GetEmails(folder As MAPIFolder) Dim objMail As MailItem ' Read through all the items For i = 1 To folder.Items.Count Set objMail = folder.Items(i) GetEmail objMail.Body Next i End Sub Sub GetEmail(s As String) Dim txt = s Do Until InStr(txt, "@") <= 0 Dim tleft As Integer Dim tright As Integer Dim start As Integer Dim text As String Dim email As String text = Replace(text, " at ", "@", VbCompareMethod.vbTextCompare) text = Replace(text, "'at'", "@", VbCompareMethod.vbTextCompare) text = Replace(text, "*at*", "@", VbCompareMethod.vbTextCompare) text = Replace(text, "*at*", "@", VbCompareMethod.vbTextCompare) text = Replace(text, "<", " ", VbCompareMethod.vbTextCompare) text = Replace(text, ">", " ", VbCompareMethod.vbTextCompare) text = Replace(text, ":", " ", VbCompareMethod.vbTextCompare) 'one two ab@bd.com one two tleft = InStr(text, "@") '11 WriteToATextFile Str(tleft) WriteToATextFile Str(Len(text)) start = InStrRev(text, " ", Len(text) - tleft) 'WriteToATextFile Str(start) 'WriteToATextFile Str(Len(text)) 'start = Len(text) - tleft text = left(text, start) ' ab@bd.com one two tright = InStr(text, " ") '9 email = left(text, tright) WriteToATextFile email text = right(text, Len(text) - Len(email)) GetEmail txt Loop End Sub