Macro – Outlook – Save as Text

Thanks to Google and many Microsoft Forum participants!
This is just a part of QAWeb's participation in the Open Source "communal" help and "leveraging" in the Internet community.
Sub SaveSelectedAsTXT()

Dim myItem As Outlook.Inspector

Dim myOlExp As Outlook.Explorer  '
Dim myOlSel As Outlook.Selection '
Dim objItem As Object

Dim strname, strSaveToPath As String
Dim x As Integer
' CHANGE / CHOOSE YOUR TARGET FOLDER BELOW.  YOU WILL GET A CHECK FILE SPELLING ERROR IF THE FOLDER DOES NOT EXIST
strSaveToPath = getENV("USERPROFILE") & "\Desktop\"           'CURRENT USER'S DESKTOP
'strSaveToPath = getENV("HOMEPATH") & "\My Documents\txttst\"   'CURRENT USER'S "MY DOCUMENTS\XYZ OR TXTTST OR WHATEVER\" FOLDER, MUST END WITH SLASH
Set myItem = Application.ActiveInspector
Set myOlExp = Application.ActiveExplore
Set myOlSel = myOlExp.Selection
If Not TypeName(myOlExp) = "Nothing" Then

'        Set objItem = myOlExp.CurrentItem

'        strname = stripIllegalChars(objItem.Subject)

 
'Prompt the user for confirmation

 Dim strPrompt As String

 strPrompt = IIf(myOlSel.Count = 1, myOlSel.Count & " Selected Item", myOlSel.Count & " Selected Items")

 strPrompt = strPrompt & " will be saved to " & vbCrLf & strSaveToPath & vbCrLf & _

 "Any files with the same name will be OVERWRITTEN."

 If MsgBox(strPrompt, vbYesNo + vbQuestion) = vbYes Then

 'objItem.SaveAs Environ("HOMEPATH") & "\My Documents\" & strname & ".txt", olTXT

 For x = 1 To myOlSel.Count

 strname = stripIllegalChars(myOlSel.Item(x).Subject)

 'MsgTxt = MsgTxt & vbCrLf & myOlSel.Item(x).SenderName & ";"

 'objItem.SaveAs Environ("USERPROFILE") & "\Desktop\" & strname & ".txt", olTXT

 myOlSel.Item(x).Display

 myOlSel.Item(x).SaveAs strSaveToPath & strname & ".txt", olTXT

 myOlSel.Item(x).Close olPromptForSave

 '  myFolder.Items(1).Display

 Next x

 End If

 Else

 MsgBox "There is no current active [Outlook] Explorer."

 End If

End Sub   ' SaveSelectedAsTXT  by allanwhitworth@yahoo.com

Sub SaveAttachmentsToFolder()  'copied from Google search

' This Outlook macro checks a named subfolder in the Outlook Inbox

' (here the "Sales Reports" folder) for messages with attached

' files of a specific type (here file with an "xls" extension)

' and saves them to disk. Saved files are timestamped. The user

' can choose to view the saved files in Windows Explorer.

' NOTE: make sure the specified subfolder and save folder exist

' before running the macro.

 On Error GoTo SaveAttachmentsToFolder_err

' Declare variables

 Dim ns As NameSpace

 Dim Inbox As MAPIFolder

 Dim SubFolder As MAPIFolder

 Dim Item As Object

 Dim Atmt As Attachment

 Dim FileName As String

 Dim i As Integer

 Dim varResponse As VbMsgBoxResult

 Set ns = GetNamespace("MAPI")

 Set Inbox = ns.GetDefaultFolder(olFolderInbox)

 Set SubFolder = Inbox.Folders("Sales Reports") ' Enter correct subfolder name.

 i = 0

' Check subfolder for messages and exit of none found

 If SubFolder.Items.Count = 0 Then

 MsgBox "There are no messages in the Sales Reports folder.", vbInformation, _

 "Nothing Found"

 Exit Sub

 End If

' Check each message for attachments

 For Each Item In SubFolder.Items

 For Each Atmt In Item.Attachments

' Check filename of each attachment and save if it has "xls" extension

 If Right(Atmt.FileName, 3) = "xls" Then

 ' This path must exist! Change folder name as necessary.

 FileName = "C:\Email Attachments\" & _

 Format(Item.CreationTime, "yyyymmdd_hhnnss_") & Atmt.FileName

 Atmt.SaveAsFile FileName

 i = i + 1

 End If

 Next Atmt

 Next Item

' Show summary message

 If i > 0 Then

 varResponse = MsgBox("I found " & i & " attached files." _

 & vbCrLf & "I have saved them into the C:\Email Attachments folder." _

 & vbCrLf & vbCrLf & "Would you like to view the files now?" _

 , vbQuestion + vbYesNo, "Finished!")

' Open Windows Explorer to display saved files if user chooses

 If varResponse = vbYes Then

 Shell "Explorer.exe /e,C:\Email Attachments", vbNormalFocus

 End If

 Else

 MsgBox "I didn't find any attached files in your mail.", vbInformation, "Finished!"

 End If

' Clear memory

SaveAttachmentsToFolder_exit:

 Set Atmt = Nothing

 Set Item = Nothing

 Set ns = Nothing

 Exit Sub

' Handle Errors

SaveAttachmentsToFolder_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 SaveAttachmentsToFolder_exit

End Sub

Private Function getENV(strReturn As String)

 'CALLED BY ChDir getENV("userprofile") & "\Desktop\"

Dim EnvString, Indx, Msg, PathLen    ' Declare variables.

Indx = 1    ' Initialize index to 1.

For Indx = 1 To Len(Environ(Indx)) + 2

 EnvString = Environ(Indx)    ' Get environment

 If UCase(Left(EnvString, Len(strReturn))) = UCase(strReturn) Then

 getENV = Mid(EnvString, Len(strReturn) + 2)

 End If

 Next Indx 'Loop Until EnvString = ""

End Function

Private Function stripIllegalChars(strTest As String)

Dim strTemp, testThis As String

Dim kount As Integer

strTemp = ""

strTest = Trim(strTest)

For kount = 1 To Len(strTest)

testThis = Mid(strTest, kount, 1)

If InStr(".|\/?*:<>'", testThis) > 0 Or Asc(testThis) < 32 Or Asc(testThis) = 34 Or Asc(testThis) > 129 Then

 'strTemp = strTemp & "_"

 Else: strTemp = strTemp & Mid(strTest, kount, 1)

End If

Next kount

stripIllegalChars = strTemp

End Function