All pastes #1951482 Raw Edit

AttachmentEditFix

public text v1 · immutable
#1951482 ·published 2010-09-30 00:19 UTC
rendered paste body
Attribute VB_Name = "AttachmentEditFix"
Public Sub OpenExcelAttach()
Dim objOL As Outlook.Application
Dim objMsg As Outlook.MailItem 'Object
Dim objAttachments As Outlook.Attachments
Dim objSelection As Outlook.Selection
Dim i As Long
Dim lngCount As Long
Dim strFile As String
Dim strFolderpath As String
Dim strDeletedFiles As String

    ' Get the path to your My Documents folder
    strFolderpath = CreateObject("WScript.Shell").SpecialFolders(16)
    On Error Resume Next

    ' Instantiate an Outlook Application object.
    Set objOL = CreateObject("Outlook.Application")

    ' Get the collection of selected objects.
    Set objSelection = objOL.ActiveExplorer.Selection

    ' Set the Attachment folder.
    strFolderpath = strFolderpath & "\OLAttachments\"

    'Use the MsgBox command to troubleshoot. Remove it from the final code.
    'MsgBox strFolderpath

    ' Check each selected item for attachments. If attachments exist,
    ' save them to the Temp folder and strip them from the item.
    For Each objMsg In objSelection

    ' This code only strips attachments from mail items.
    ' If objMsg.class=olMail Then
    ' Get the Attachments collection of the item.
    Set objAttachments = objMsg.Attachments
    lngCount = objAttachments.Count
    
    'Use the MsgBox command to troubleshoot. Remove it from the final code.
   ' MsgBox objAttachments.Count
    
    If lngCount > 0 Then
    
    ' We need to use a count down loop for removing items
    ' from a collection. Otherwise, the loop counter gets
    ' confused and only every other item is removed.
    
    For i = lngCount To 1 Step -1
    
    ' Save attachment before deleting from item.
    ' Get the file name.
    strFile = objAttachments.Item(i).FileName
    
    ' Combine with the path to the Temp folder.

    ' Save the attachment as a file.
    
Set oWSH = CreateObject("WScript.Shell")
soutsectmp = oWSH.RegRead("HKCU\Software\Microsoft\Office\14.0" _
& "\Outlook\Security\OutlookSecureTempFolder")
Dim fullpath As String
Dim temp As String
temp = "c:\tempsave\" & strFile
fullpath = soutsectmp & strFile
objAttachments.Item(i).SaveAsFile temp
Dim oExcel As Excel.Application
Dim oWB As Workbook
Set oExcel = New Excel.Application
Set oWB = oExcel.Workbooks.Open(temp)
oExcel.Visible = True


    ' Delete the attachment.
    'objAttachments.Item(i).Delete
    
    'write the save as path to a string to add to the message
    'check for html and use html tags in link
   ' If objMsg.BodyFormat <> olFormatHTML Then
     '   strDeletedFiles = strDeletedFiles & vbCrLf & "<file://" & strFile & ">"
     '   Else
      '  strDeletedFiles = strDeletedFiles & "<br>" & "<a href='file://" & _
      '  strFile & "'>" & strFile & "</a>"
   ' End If
    
    'Use the MsgBox command to troubleshoot. Remove it from the final code.
   ' MsgBox strDeletedFiles
    
    Next i
    End If
    
    ' Adds the filename string to the message body and save it
    ' Check for HTML body
  '  If objMsg.BodyFormat <> olFormatHTML Then
    '    objMsg.Body = objMsg.Body & vbCrLf & _
     '   "The file(s) were saved to " & strDeletedFiles
  '  Else
     '   objMsg.HTMLBody = objMsg.HTMLBody & "<p>" & _
      '  "The file(s) were saved to " & strDeletedFiles & "</p>"
   ' End If
        'objMsg.Save
    
    Next
    
ExitSub:

Set objAttachments = Nothing
Set objMsg = Nothing
Set objSelection = Nothing
Set objOL = Nothing
End Sub

Public Sub SaveExcelAttach()
Dim objOL As Outlook.Application
Dim objMsg As Outlook.MailItem 'Object
Dim objAttachments As Outlook.Attachments
Dim objSelection As Outlook.Selection
Dim i As Long
Dim lngCount As Long
Dim strFile As String
Dim strFolderpath As String
Dim strDeletedFiles As String

    ' Get the path to your My Documents folder
    strFolderpath = CreateObject("WScript.Shell").SpecialFolders(16)
    On Error Resume Next

    ' Instantiate an Outlook Application object.
    Set objOL = CreateObject("Outlook.Application")

    ' Get the collection of selected objects.
    Set objSelection = objOL.ActiveExplorer.Selection

    ' Set the Attachment folder.
    strFolderpath = strFolderpath & "\OLAttachments\"

    'Use the MsgBox command to troubleshoot. Remove it from the final code.
    'MsgBox strFolderpath

    ' Check each selected item for attachments. If attachments exist,
    ' save them to the Temp folder and strip them from the item.
    For Each objMsg In objSelection

    ' This code only strips attachments from mail items.
    ' If objMsg.class=olMail Then
    ' Get the Attachments collection of the item.
    Set objAttachments = objMsg.Attachments
    lngCount = objAttachments.Count
    
    'Use the MsgBox command to troubleshoot. Remove it from the final code.
   ' MsgBox objAttachments.Count
    
    If lngCount > 0 Then
    
    ' We need to use a count down loop for removing items
    ' from a collection. Otherwise, the loop counter gets
    ' confused and only every other item is removed.
    
    For i = lngCount To 1 Step -1
    
    ' Save attachment before deleting from item.
    ' Get the file name.
    strFile = objAttachments.Item(i).FileName
    
    ' Combine with the path to the Temp folder.

    ' Save the attachment as a file.
    
Set oWSH = CreateObject("WScript.Shell")
soutsectmp = oWSH.RegRead("HKCU\Software\Microsoft\Office\14.0" _
& "\Outlook\Security\OutlookSecureTempFolder")
Dim fullpath As String
Dim temp As String
temp = "c:\tempsave\" & strFile
fullpath = soutsectmp & strFile
Dim KillFile  As String
KillFile = fullpath
'Check that file exists
If Len(Dir$(KillFile)) > 0 Then
    'First remove readonly attribute, if set
    SetAttr KillFile, vbNormal
    'Then delete the file
     Kill KillFile
End If
'objAttachments.Item(i).SaveAsFile fullpath
Application.DisplayAlerts = False 'IT WORKS TO DISABLE ALERT PROMPT

'SAVES FILE USING THE VARIABLE BOOKNAME AS FILENAME
ActiveWorkbook.SaveAs FileName:=fullpath

Application.DisplayAlerts = True
SetAttr fullpath, vbReadOnly

    ' Delete the attachment.
    'objAttachments.Item(i).Delete
    
    'write the save as path to a string to add to the message
    'check for html and use html tags in link
   ' If objMsg.BodyFormat <> olFormatHTML Then
     '   strDeletedFiles = strDeletedFiles & vbCrLf & "<file://" & strFile & ">"
     '   Else
      '  strDeletedFiles = strDeletedFiles & "<br>" & "<a href='file://" & _
      '  strFile & "'>" & strFile & "</a>"
   ' End If
    
    'Use the MsgBox command to troubleshoot. Remove it from the final code.
   ' MsgBox strDeletedFiles
    
    Next i
    End If
    
    ' Adds the filename string to the message body and save it
    ' Check for HTML body
  '  If objMsg.BodyFormat <> olFormatHTML Then
    '    objMsg.Body = objMsg.Body & vbCrLf & _
     '   "The file(s) were saved to " & strDeletedFiles
  '  Else
     '   objMsg.HTMLBody = objMsg.HTMLBody & "<p>" & _
      '  "The file(s) were saved to " & strDeletedFiles & "</p>"
   ' End If
        'objMsg.Save
    
    Next
    
ExitSub:

Set objAttachments = Nothing
Set objMsg = Nothing
Set objSelection = Nothing
Set objOL = Nothing
End Sub

Public Sub OpenWordAttach()
Dim objOL As Outlook.Application
Dim objMsg As Outlook.MailItem 'Object
Dim objAttachments As Outlook.Attachments
Dim objSelection As Outlook.Selection
Dim i As Long
Dim lngCount As Long
Dim strFile As String
Dim strFolderpath As String
Dim strDeletedFiles As String

    ' Get the path to your My Documents folder
    strFolderpath = CreateObject("WScript.Shell").SpecialFolders(16)
    On Error Resume Next

    ' Instantiate an Outlook Application object.
    Set objOL = CreateObject("Outlook.Application")

    ' Get the collection of selected objects.
    Set objSelection = objOL.ActiveExplorer.Selection

    ' Set the Attachment folder.
    strFolderpath = strFolderpath & "\OLAttachments\"

    'Use the MsgBox command to troubleshoot. Remove it from the final code.
    'MsgBox strFolderpath

    ' Check each selected item for attachments. If attachments exist,
    ' save them to the Temp folder and strip them from the item.
    For Each objMsg In objSelection

    ' This code only strips attachments from mail items.
    ' If objMsg.class=olMail Then
    ' Get the Attachments collection of the item.
    Set objAttachments = objMsg.Attachments
    lngCount = objAttachments.Count
    
    'Use the MsgBox command to troubleshoot. Remove it from the final code.
   ' MsgBox objAttachments.Count
    
    If lngCount > 0 Then
    
    ' We need to use a count down loop for removing items
    ' from a collection. Otherwise, the loop counter gets
    ' confused and only every other item is removed.
    
    For i = lngCount To 1 Step -1
    
    ' Save attachment before deleting from item.
    ' Get the file name.
    strFile = objAttachments.Item(i).FileName
    
    ' Combine with the path to the Temp folder.

    ' Save the attachment as a file.
    
Set oWSH = CreateObject("WScript.Shell")
soutsectmp = oWSH.RegRead("HKCU\Software\Microsoft\Office\14.0" _
& "\Outlook\Security\OutlookSecureTempFolder")
Dim fullpath As String
Dim temp As String
temp = "c:\tempsave\" & strFile
fullpath = soutsectmp & strFile

    objAttachments.Item(i).SaveAsFile temp
Dim oword As Word.Application

Dim oWB As Documents
Set oword = New Word.Application
Set oWB = oword.Documents.Open(fullpath)
oword.Visible = True


    ' Delete the attachment.
    'objAttachments.Item(i).Delete
    
    'write the save as path to a string to add to the message
    'check for html and use html tags in link
   ' If objMsg.BodyFormat <> olFormatHTML Then
     '   strDeletedFiles = strDeletedFiles & vbCrLf & "<file://" & strFile & ">"
     '   Else
      '  strDeletedFiles = strDeletedFiles & "<br>" & "<a href='file://" & _
      '  strFile & "'>" & strFile & "</a>"
   ' End If
    
    'Use the MsgBox command to troubleshoot. Remove it from the final code.
   ' MsgBox strDeletedFiles
    
    Next i
    End If
    
    ' Adds the filename string to the message body and save it
    ' Check for HTML body
  '  If objMsg.BodyFormat <> olFormatHTML Then
    '    objMsg.Body = objMsg.Body & vbCrLf & _
     '   "The file(s) were saved to " & strDeletedFiles
  '  Else
     '   objMsg.HTMLBody = objMsg.HTMLBody & "<p>" & _
      '  "The file(s) were saved to " & strDeletedFiles & "</p>"
   ' End If
        'objMsg.Save
    
    Next
    
ExitSub:

Set objAttachments = Nothing
Set objMsg = Nothing
Set objSelection = Nothing
Set objOL = Nothing
End Sub
Public Sub SaveWordAttach()
Dim objOL As Outlook.Application
Dim objMsg As Outlook.MailItem 'Object
Dim objAttachments As Outlook.Attachments
Dim objSelection As Outlook.Selection
Dim i As Long
Dim lngCount As Long
Dim strFile As String
Dim strFolderpath As String
Dim strDeletedFiles As String

    ' Get the path to your My Documents folder
    strFolderpath = CreateObject("WScript.Shell").SpecialFolders(16)
    On Error Resume Next

    ' Instantiate an Outlook Application object.
    Set objOL = CreateObject("Outlook.Application")

    ' Get the collection of selected objects.
    Set objSelection = objOL.ActiveExplorer.Selection

    ' Set the Attachment folder.
    strFolderpath = strFolderpath & "\OLAttachments\"

    'Use the MsgBox command to troubleshoot. Remove it from the final code.
    'MsgBox strFolderpath

    ' Check each selected item for attachments. If attachments exist,
    ' save them to the Temp folder and strip them from the item.
    For Each objMsg In objSelection

    ' This code only strips attachments from mail items.
    ' If objMsg.class=olMail Then
    ' Get the Attachments collection of the item.
    Set objAttachments = objMsg.Attachments
    lngCount = objAttachments.Count
    
    'Use the MsgBox command to troubleshoot. Remove it from the final code.
   ' MsgBox objAttachments.Count
    
    If lngCount > 0 Then
    
    ' We need to use a count down loop for removing items
    ' from a collection. Otherwise, the loop counter gets
    ' confused and only every other item is removed.
    
    For i = lngCount To 1 Step -1
    
    ' Save attachment before deleting from item.
    ' Get the file name.
    strFile = objAttachments.Item(i).FileName
    
    ' Combine with the path to the Temp folder.

    ' Save the attachment as a file.
    
Set oWSH = CreateObject("WScript.Shell")
soutsectmp = oWSH.RegRead("HKCU\Software\Microsoft\Office\14.0" _
& "\Outlook\Security\OutlookSecureTempFolder")
Dim fullpath As String
Dim temp As String
temp = "c:\tempsave\" & strFile
fullpath = soutsectmp & strFile
Dim KillFile  As String
KillFile = fullpath
'Check that file exists
If Len(Dir$(KillFile)) > 0 Then
    'First remove readonly attribute, if set
    SetAttr KillFile, vbNormal
    'Then delete the file
     Kill KillFile
End If
'objAttachments.Item(i).SaveAsFile fullpath
Application.DisplayAlerts = False 'IT WORKS TO DISABLE ALERT PROMPT

'SAVES FILE USING THE VARIABLE BOOKNAME AS FILENAME
ActiveDocument.SaveAs FileName:=fullpath

Application.DisplayAlerts = True
SetAttr fullpath, vbReadOnly

    ' Delete the attachment.
    'objAttachments.Item(i).Delete
    
    'write the save as path to a string to add to the message
    'check for html and use html tags in link
   ' If objMsg.BodyFormat <> olFormatHTML Then
     '   strDeletedFiles = strDeletedFiles & vbCrLf & "<file://" & strFile & ">"
     '   Else
      '  strDeletedFiles = strDeletedFiles & "<br>" & "<a href='file://" & _
      '  strFile & "'>" & strFile & "</a>"
   ' End If
    
    'Use the MsgBox command to troubleshoot. Remove it from the final code.
   ' MsgBox strDeletedFiles
    
    Next i
    End If
    
    ' Adds the filename string to the message body and save it
    ' Check for HTML body
  '  If objMsg.BodyFormat <> olFormatHTML Then
    '    objMsg.Body = objMsg.Body & vbCrLf & _
     '   "The file(s) were saved to " & strDeletedFiles
  '  Else
     '   objMsg.HTMLBody = objMsg.HTMLBody & "<p>" & _
      '  "The file(s) were saved to " & strDeletedFiles & "</p>"
   ' End If
        'objMsg.Save
    
    Next
    
ExitSub:

Set objAttachments = Nothing
Set objMsg = Nothing
Set objSelection = Nothing
Set objOL = Nothing
End Sub