A Microsoft Outlook email forum. Outlook Banter

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » Outlook Banter forum » Microsoft Outlook Email Newsgroups » Outlook and VBA
Site Map Home Register Authors List Search Today's Posts Mark Forums Read Web Partners

how to disable security message in save attachments macro "A programis trying to access e-mail addresses . ."



 
 
Thread Tools Search this Thread Display Modes
  #1  
Old May 27th 09, 08:09 PM posted to microsoft.public.outlook.program_vba
[email protected]
external usenet poster
 
Posts: 2
Default how to disable security message in save attachments macro "A programis trying to access e-mail addresses . ."

The following code saves the attachments in the selected email. It
lets the user browse to select which folder to save the attachements
in. It works fine except for the following security warning, "A
program is trying to access e-mail addresses you have stored in
Outlook".

I have read that the security warning can be stopped by using the
existing instance of Outlook instead of initiating a new Outlook
session in memory. I tried removing the word "New" in the following
code but the While-Wend code just kept cycling and the
attachments.count showed up as zero, (code: Dim myOlApp As New
Outlook.Application)

I also read the I can use Redemption, but I don't understand what
changes to make to the code to use Redemption.

I am using Outlook 2003.

I really appreciate any help -- Thanks
================= CODE BELOW ==========================
Sub SaveAttachment()

'Declaration
Dim myItems, myAttachments, myAttachment As Object
Dim myItem As Outlook.MailItem
Dim myOrt As String
' I TRIED REMOVING THE WORD "NEW", BELOW, TO STOP ERROR MESSAGES
' BUT IT DIDN'T WORK
'Dim myOlApp As Outlook.Application
Dim myOlApp As New Outlook.Application
Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection

'Ask for destination folder
Dim oShell As Object
Dim oFolderDlg As Object
Set oShell = CreateObject("Shell.Application")

Dim ShellApp As Object
Dim BrowseForFolder As String

Set ShellApp = CreateObject("Shell.Application"). _
BrowseForFolder(0, "Please select the folder where you want to
save the attachments. ", 0, "C:\")

''' Set ShellApp = CreateObject("Shell.Application"). _
''' BrowseForFolder(0, "Please select the folder where you want to
save the attachments. ", 0, OpenAt)

On Error Resume Next
BrowseForFolder = ShellApp.self.Path
On Error GoTo 0

Select Case Mid(BrowseForFolder, 2, 1)

Case Is = ""
If BrowseForFolder = "" Then
Exit Sub
End If

Case Is = ":"
If Left(BrowseForFolder, 1) = ":" Then
BrowseForFolder = ""
End If
Case Is = "\"
If Not Left(BrowseForFolder, 1) = "\" Then
BrowseForFolder = ""
End If
Case Else
BrowseForFolder = ""
End Select

'''ExitFunction:

Set ShellApp = Nothing

'Set oFolderDlg = oShell.BrowseForFolder(&H0, "Select the folder where
you want to save the attachments.", &H0, "C:\")

'myOrt = oFolderDlg.self.Path & "\"
myOrt = BrowseForFolder & "\"
On Error Resume Next

'work on selected items
Set myOlExp = myOlApp.ActiveExplorer
Set myOlSel = myOlExp.Selection

'for all items do...
For Each myItem In myOlSel
'point on attachments
Set myAttachments = myItem.Attachments

'if there are some...
If myAttachments.Count 0 Then

'add remark to message text THIS CAUSES ERROR
myItem.Body = myItem.Body & vbCrLf & _
"Removed Attachments:" & vbCrLf

'for all attachments do...
For i = 1 To myAttachments.Count

'save them to destination
myAttachments(i).SaveAsFile myOrt & _
myAttachments(i).DisplayName

'add name and destination to message text
' THE CODE BELOW GENERATES THE ERROR MESSSAGE
myItem.Body = myItem.Body & _
"File: " & myOrt & _
myAttachments(i).DisplayName & vbCrLf

Next i

'for all attachments do...
While myAttachments.Count 0
'remove it (use this method in Outlook XP)
myAttachments.Remove 1

'remove it (use this method in Outlook 2000)
' myAttachments(1).Delete

Wend

'save item without attachments
myItem.Save
End If

Next

'free variables
Set myItems = Nothing
Set myItem = Nothing
Set myAttachments = Nothing
Set myAttachment = Nothing
Set myOlApp = Nothing
Set myOlExp = Nothing
Set myOlSel = Nothing

End Sub
Ads
  #2  
Old May 27th 09, 08:18 PM posted to microsoft.public.outlook.program_vba
Sue Mosher [MVP][_3_]
external usenet poster
 
Posts: 465
Default how to disable security message in save attachments macro "A program is trying to access e-mail addresses . ."

Try replacing this statement:

Dim myOlApp As New Outlook.Application

with

Set myOlApp = Application

--
Sue Mosher, Outlook MVP
Author of Microsoft Outlook 2007 Programming:
Jumpstart for Power Users and Administrators
http://www.outlookcode.com/article.aspx?id=54


wrote in message
...
The following code saves the attachments in the selected email. It
lets the user browse to select which folder to save the attachements
in. It works fine except for the following security warning, "A
program is trying to access e-mail addresses you have stored in
Outlook".

I have read that the security warning can be stopped by using the
existing instance of Outlook instead of initiating a new Outlook
session in memory. I tried removing the word "New" in the following
code but the While-Wend code just kept cycling and the
attachments.count showed up as zero, (code: Dim myOlApp As New
Outlook.Application)

I also read the I can use Redemption, but I don't understand what
changes to make to the code to use Redemption.

I am using Outlook 2003.

I really appreciate any help -- Thanks
================= CODE BELOW ==========================
Sub SaveAttachment()

'Declaration
Dim myItems, myAttachments, myAttachment As Object
Dim myItem As Outlook.MailItem
Dim myOrt As String
' I TRIED REMOVING THE WORD "NEW", BELOW, TO STOP ERROR MESSAGES
' BUT IT DIDN'T WORK
'Dim myOlApp As Outlook.Application
Dim myOlApp As New Outlook.Application
Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection

'Ask for destination folder
Dim oShell As Object
Dim oFolderDlg As Object
Set oShell = CreateObject("Shell.Application")

Dim ShellApp As Object
Dim BrowseForFolder As String

Set ShellApp = CreateObject("Shell.Application"). _
BrowseForFolder(0, "Please select the folder where you want to
save the attachments. ", 0, "C:\")

''' Set ShellApp = CreateObject("Shell.Application"). _
''' BrowseForFolder(0, "Please select the folder where you want to
save the attachments. ", 0, OpenAt)

On Error Resume Next
BrowseForFolder = ShellApp.self.Path
On Error GoTo 0

Select Case Mid(BrowseForFolder, 2, 1)

Case Is = ""
If BrowseForFolder = "" Then
Exit Sub
End If

Case Is = ":"
If Left(BrowseForFolder, 1) = ":" Then
BrowseForFolder = ""
End If
Case Is = "\"
If Not Left(BrowseForFolder, 1) = "\" Then
BrowseForFolder = ""
End If
Case Else
BrowseForFolder = ""
End Select

'''ExitFunction:

Set ShellApp = Nothing

'Set oFolderDlg = oShell.BrowseForFolder(&H0, "Select the folder where
you want to save the attachments.", &H0, "C:\")

'myOrt = oFolderDlg.self.Path & "\"
myOrt = BrowseForFolder & "\"
On Error Resume Next

'work on selected items
Set myOlExp = myOlApp.ActiveExplorer
Set myOlSel = myOlExp.Selection

'for all items do...
For Each myItem In myOlSel
'point on attachments
Set myAttachments = myItem.Attachments

'if there are some...
If myAttachments.Count 0 Then

'add remark to message text THIS CAUSES ERROR
myItem.Body = myItem.Body & vbCrLf & _
"Removed Attachments:" & vbCrLf

'for all attachments do...
For i = 1 To myAttachments.Count

'save them to destination
myAttachments(i).SaveAsFile myOrt & _
myAttachments(i).DisplayName

'add name and destination to message text
' THE CODE BELOW GENERATES THE ERROR MESSSAGE
myItem.Body = myItem.Body & _
"File: " & myOrt & _
myAttachments(i).DisplayName & vbCrLf

Next i

'for all attachments do...
While myAttachments.Count 0
'remove it (use this method in Outlook XP)
myAttachments.Remove 1

'remove it (use this method in Outlook 2000)
' myAttachments(1).Delete

Wend

'save item without attachments
myItem.Save
End If

Next

'free variables
Set myItems = Nothing
Set myItem = Nothing
Set myAttachments = Nothing
Set myAttachment = Nothing
Set myOlApp = Nothing
Set myOlExp = Nothing
Set myOlSel = Nothing

End Sub



  #3  
Old May 27th 09, 09:25 PM posted to microsoft.public.outlook.program_vba
[email protected]
external usenet poster
 
Posts: 2
Default how to disable security message in save attachments macro "Aprogram is trying to access e-mail addresses . ."

On May 27, 2:18*pm, "Sue Mosher [MVP]" wrote:
Try replacing this statement:

* * Dim myOlApp As New Outlook.Application

with

* * Set myOlApp = Application

--
Sue Mosher, Outlook MVP
* *Author of Microsoft Outlook 2007 Programming:
* * *Jumpstart for Power Users and Administrators
* *http://www.outlookcode.com/article.aspx?id=54

wrote in message

...



The following code saves the attachments in the selected email. *It
lets the user browse to select which folder to save the attachements
in. *It works fine except for the following security warning, "A
program is trying to access e-mail addresses you have stored in
Outlook".


I have read that the security warning can be stopped by using the
existing instance of Outlook instead of initiating a new Outlook
session in memory. *I tried removing the word "New" in the following
code but the While-Wend code just kept cycling and the
attachments.count showed up as zero, *(code: Dim myOlApp As New
Outlook.Application)


I also read the I can use Redemption, but I don't understand what
changes to make to the code to use Redemption.


I am using Outlook 2003.


I really appreciate any help -- Thanks
================= CODE BELOW ==========================
Sub SaveAttachment()


'Declaration
Dim myItems, myAttachments, myAttachment As Object
Dim myItem As Outlook.MailItem
Dim myOrt As String
' I TRIED REMOVING THE WORD "NEW", BELOW, TO STOP ERROR MESSAGES
' BUT IT DIDN'T WORK
'Dim myOlApp As Outlook.Application
Dim myOlApp As New Outlook.Application
Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection


'Ask for destination folder
Dim oShell As Object
Dim oFolderDlg As Object
Set oShell = CreateObject("Shell.Application")


Dim ShellApp As Object
Dim BrowseForFolder As String


* *Set ShellApp = CreateObject("Shell.Application"). _
* *BrowseForFolder(0, "Please select the folder where you want to
save the attachments. ", 0, "C:\")


''' * *Set ShellApp = CreateObject("Shell.Application"). _
''' * *BrowseForFolder(0, "Please select the folder where you want to
save the attachments. ", 0, OpenAt)


* *On Error Resume Next
* *BrowseForFolder = ShellApp.self.Path
* *On Error GoTo 0


* *Select Case Mid(BrowseForFolder, 2, 1)


* *Case Is = ""
* *If BrowseForFolder = "" Then
* *Exit Sub
* *End If


* *Case Is = ":"
* * * *If Left(BrowseForFolder, 1) = ":" Then
* * * * * *BrowseForFolder = ""
* * * *End If
* *Case Is = "\"
* * * *If Not Left(BrowseForFolder, 1) = "\" Then
* * * * * *BrowseForFolder = ""
* * * *End If
* *Case Else
* * * *BrowseForFolder = ""
* *End Select


'''ExitFunction:


* *Set ShellApp = Nothing


'Set oFolderDlg = oShell.BrowseForFolder(&H0, "Select the folder where
you want to save the attachments.", &H0, "C:\")


'myOrt = oFolderDlg.self.Path & "\"
myOrt = BrowseForFolder & "\"
* *On Error Resume Next


* *'work on selected items
* *Set myOlExp = myOlApp.ActiveExplorer
* *Set myOlSel = myOlExp.Selection


* *'for all items do...
* *For Each myItem In myOlSel
* * * *'point on attachments
* * * *Set myAttachments = myItem.Attachments


* * * *'if there are some...
* * * *If myAttachments.Count 0 Then


* * * * * *'add remark to message text THIS CAUSES ERROR
* * * * * *myItem.Body = myItem.Body & vbCrLf & _
* * * * * * * *"Removed Attachments:" & vbCrLf


* * * * * *'for all attachments do...
* * * * * *For i = 1 To myAttachments.Count


* * * * * * * *'save them to destination
* * * * * * * *myAttachments(i).SaveAsFile myOrt & _
* * * * * * * * * *myAttachments(i).DisplayName


* * * * * * * *'add name and destination to message text
* * * * * * * *' THE CODE BELOW GENERATES THE ERROR MESSSAGE
* * * * * * * *myItem.Body = myItem.Body & _
* * * * * * * * * *"File: " & myOrt & _
* * * * * * * * * *myAttachments(i).DisplayName & vbCrLf


* * * * * *Next i


* * * * * *'for all attachments do...
* * * * * *While myAttachments.Count 0
* * * * * * * *'remove it (use this method in Outlook XP)
* * * * * * * *myAttachments.Remove 1


* * * * * * * *'remove it (use this method in Outlook 2000)
* * * * * * * *' myAttachments(1).Delete


* * * * * *Wend


* * * * * *'save item without attachments
* * * * * *myItem.Save
* * * *End If


* *Next


* *'free variables
* *Set myItems = Nothing
* *Set myItem = Nothing
* *Set myAttachments = Nothing
* *Set myAttachment = Nothing
* *Set myOlApp = Nothing
* *Set myOlExp = Nothing
* *Set myOlSel = Nothing


End Sub- Hide quoted text -


- Show quoted text -


Thank You! That works great! I really appreciate your help.
  #4  
Old June 3rd 09, 12:25 PM posted to microsoft.public.outlook.program_vba
RC[_2_]
external usenet poster
 
Posts: 1
Default save attachments macro - multiple attachments with the same file name

On May 27, 2:18*pm, "Sue Mosher [MVP]" wrote:
Try replacing this statement:

* * Dim myOlApp As New Outlook.Application

with

* * Set myOlApp = Application

--
Sue Mosher, Outlook MVP
* *Author of Microsoft Outlook 2007 Programming:
* * *Jumpstart for Power Users and Administrators
* *http://www.outlookcode.com/article.aspx?id=54

wrote in message

...



The following code saves the attachments in the selected email. *It
lets the user browse to select which folder to save the attachements
in. *It works fine except for the following security warning, "A
program is trying to access e-mail addresses you have stored in
Outlook".


I have read that the security warning can be stopped by using the
existing instance of Outlook instead of initiating a new Outlook
session in memory. *I tried removing the word "New" in the following
code but the While-Wend code just kept cycling and the
attachments.count showed up as zero, *(code: Dim myOlApp As New
Outlook.Application)


I also read the I can use Redemption, but I don't understand what
changes to make to the code to use Redemption.


I am using Outlook 2003.


I really appreciate any help -- Thanks
================= CODE BELOW ==========================
Sub SaveAttachment()


'Declaration
Dim myItems, myAttachments, myAttachment As Object
Dim myItem As Outlook.MailItem
Dim myOrt As String
' I TRIED REMOVING THE WORD "NEW", BELOW, TO STOP ERROR MESSAGES
' BUT IT DIDN'T WORK
'Dim myOlApp As Outlook.Application
Dim myOlApp As New Outlook.Application
Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection


'Ask for destination folder
Dim oShell As Object
Dim oFolderDlg As Object
Set oShell = CreateObject("Shell.Application")


Dim ShellApp As Object
Dim BrowseForFolder As String


* *Set ShellApp = CreateObject("Shell.Application"). _
* *BrowseForFolder(0, "Please select the folder where you want to
save the attachments. ", 0, "C:\")


''' * *Set ShellApp = CreateObject("Shell.Application"). _
''' * *BrowseForFolder(0, "Please select the folder where you want to
save the attachments. ", 0, OpenAt)


* *On Error Resume Next
* *BrowseForFolder = ShellApp.self.Path
* *On Error GoTo 0


* *Select Case Mid(BrowseForFolder, 2, 1)


* *Case Is = ""
* *If BrowseForFolder = "" Then
* *Exit Sub
* *End If


* *Case Is = ":"
* * * *If Left(BrowseForFolder, 1) = ":" Then
* * * * * *BrowseForFolder = ""
* * * *End If
* *Case Is = "\"
* * * *If Not Left(BrowseForFolder, 1) = "\" Then
* * * * * *BrowseForFolder = ""
* * * *End If
* *Case Else
* * * *BrowseForFolder = ""
* *End Select


'''ExitFunction:


* *Set ShellApp = Nothing


'Set oFolderDlg = oShell.BrowseForFolder(&H0, "Select the folder where
you want to save the attachments.", &H0, "C:\")


'myOrt = oFolderDlg.self.Path & "\"
myOrt = BrowseForFolder & "\"
* *On Error Resume Next


* *'work on selected items
* *Set myOlExp = myOlApp.ActiveExplorer
* *Set myOlSel = myOlExp.Selection


* *'for all items do...
* *For Each myItem In myOlSel
* * * *'point on attachments
* * * *Set myAttachments = myItem.Attachments


* * * *'if there are some...
* * * *If myAttachments.Count 0 Then


* * * * * *'add remark to message text THIS CAUSES ERROR
* * * * * *myItem.Body = myItem.Body & vbCrLf & _
* * * * * * * *"Removed Attachments:" & vbCrLf


* * * * * *'for all attachments do...
* * * * * *For i = 1 To myAttachments.Count


* * * * * * * *'save them to destination
* * * * * * * *myAttachments(i).SaveAsFile myOrt & _
* * * * * * * * * *myAttachments(i).DisplayName


* * * * * * * *'add name and destination to message text
* * * * * * * *' THE CODE BELOW GENERATES THE ERROR MESSSAGE
* * * * * * * *myItem.Body = myItem.Body & _
* * * * * * * * * *"File: " & myOrt & _
* * * * * * * * * *myAttachments(i).DisplayName & vbCrLf


* * * * * *Next i


* * * * * *'for all attachments do...
* * * * * *While myAttachments.Count 0
* * * * * * * *'remove it (use this method in Outlook XP)
* * * * * * * *myAttachments.Remove 1


* * * * * * * *'remove it (use this method in Outlook 2000)
* * * * * * * *' myAttachments(1).Delete


* * * * * *Wend


* * * * * *'save item without attachments
* * * * * *myItem.Save
* * * *End If


* *Next


* *'free variables
* *Set myItems = Nothing
* *Set myItem = Nothing
* *Set myAttachments = Nothing
* *Set myAttachment = Nothing
* *Set myOlApp = Nothing
* *Set myOlExp = Nothing
* *Set myOlSel = Nothing


End Sub


The following code works great, except some emails have multiple
attachments which have the same file name. For example, you take some
pictures with you digital camera and the camera names them,
image01.jpg, image02.jpg, you save the pictures in a folder on your
computer, erase the memory stick in the camera, take some more
pictures, again the camera names them, image01.jpg, image02.jpg,
etc., you save them in a different folder on your computer and then
attach all the photos to an email.

When the code below runs all the duplicate files are deleted without
warning.

Any ideas for coding a change to fix this would really be
appreciated. Thanks in advance.
===================== CODE BELOW ==============
Sub SaveAttachment()

'Declaration
Dim myItems, myAttachments, myAttachment As Object
Dim myItem As Outlook.MailItem
Dim myOrt As String
Set myOlApp = Application
Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection

'Ask for destination folder
Dim oShell As Object
Dim oFolderDlg As Object
Set oShell = CreateObject("Shell.Application")

Dim ShellApp As Object
Dim BrowseForFolder As String

Set ShellApp = CreateObject("Shell.Application"). _
BrowseForFolder(0, "Please select the folder where you want to
save the attachments. ", 0, "C:\")

''' Set ShellApp = CreateObject("Shell.Application"). _
''' BrowseForFolder(0, "Please select the folder where you want to
save the attachments. ", 0, OpenAt)

On Error Resume Next
BrowseForFolder = ShellApp.self.Path
On Error GoTo 0

Select Case Mid(BrowseForFolder, 2, 1)

Case Is = ""
If BrowseForFolder = "" Then
Exit Sub
End If

Case Is = ":"
If Left(BrowseForFolder, 1) = ":" Then
BrowseForFolder = ""
End If
Case Is = "\"
If Not Left(BrowseForFolder, 1) = "\" Then
BrowseForFolder = ""
End If
Case Else
BrowseForFolder = ""
End Select

'''ExitFunction:

Set ShellApp = Nothing

'Set oFolderDlg = oShell.BrowseForFolder(&H0, "Select the folder where
you want to save the attachments.", &H0, "C:\")

'myOrt = oFolderDlg.self.Path & "\"
myOrt = BrowseForFolder & "\"
On Error Resume Next

'work on selected items
Set myOlExp = myOlApp.ActiveExplorer
Set myOlSel = myOlExp.Selection

'for all items do...
For Each myItem In myOlSel
'point on attachments
Set myAttachments = myItem.Attachments

'if there are some...
If myAttachments.Count 0 Then


'for all attachments do...
For i = 1 To myAttachments.Count

'save them to destination
myAttachments(i).SaveAsFile myOrt & _
myAttachments(i).DisplayName

'add name and destination to message text
myItem.Body = "The following Attachments were removed from
this email and placed in the folder shown: " _
& myOrt & myAttachments(i).DisplayName & vbCrLf & vbCrLf &
myItem.Body

Next i

'for all attachments do...
While myAttachments.Count 0
'remove it (use this method in Outlook XP)
myAttachments.Remove 1

'remove it (use this method in Outlook 2000)
' myAttachments(1).Delete

Wend

'save item without attachments
myItem.Save
End If

Next

'free variables
Set myItems = Nothing
Set myItem = Nothing
Set myAttachments = Nothing
Set myAttachment = Nothing
Set myOlApp = Nothing
Set myOlExp = Nothing
Set myOlSel = Nothing

End Sub
  #5  
Old June 8th 09, 12:14 PM posted to microsoft.public.outlook.program_vba
Michael Bauer [MVP - Outlook]
external usenet poster
 
Posts: 1,885
Default save attachments macro - multiple attachments with the same file name



You could use the Dir function and see whether a given filename already
exists; if so, add a number and search again for an existing file with the
same name; loop until you have found a 'free' file name.

--
Best regards
Michael Bauer - MVP Outlook

: Outlook Categories? Category Manager Is Your Tool
: VBOffice Reporter for Data Analysis & Reporting
: http://www.vboffice.net/product.html?pub=6&lang=en


Am Wed, 3 Jun 2009 04:25:37 -0700 (PDT) schrieb RC:

On May 27, 2:18*pm, "Sue Mosher [MVP]" wrote:
Try replacing this statement:

* * Dim myOlApp As New Outlook.Application

with

* * Set myOlApp = Application

--
Sue Mosher, Outlook MVP
* *Author of Microsoft Outlook 2007 Programming:
* * *Jumpstart for Power Users and Administrators
* *http://www.outlookcode.com/article.aspx?id=54

wrote in message

...



The following code saves the attachments in the selected email. *It
lets the user browse to select which folder to save the attachements
in. *It works fine except for the following security warning, "A
program is trying to access e-mail addresses you have stored in
Outlook".


I have read that the security warning can be stopped by using the
existing instance of Outlook instead of initiating a new Outlook
session in memory. *I tried removing the word "New" in the following
code but the While-Wend code just kept cycling and the
attachments.count showed up as zero, *(code: Dim myOlApp As New
Outlook.Application)


I also read the I can use Redemption, but I don't understand what
changes to make to the code to use Redemption.


I am using Outlook 2003.


I really appreciate any help -- Thanks
================= CODE BELOW ==========================
Sub SaveAttachment()


'Declaration
Dim myItems, myAttachments, myAttachment As Object
Dim myItem As Outlook.MailItem
Dim myOrt As String
' I TRIED REMOVING THE WORD "NEW", BELOW, TO STOP ERROR MESSAGES
' BUT IT DIDN'T WORK
'Dim myOlApp As Outlook.Application
Dim myOlApp As New Outlook.Application
Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection


'Ask for destination folder
Dim oShell As Object
Dim oFolderDlg As Object
Set oShell = CreateObject("Shell.Application")


Dim ShellApp As Object
Dim BrowseForFolder As String


* *Set ShellApp = CreateObject("Shell.Application"). _
* *BrowseForFolder(0, "Please select the folder where you want to
save the attachments. ", 0, "C:\")


''' * *Set ShellApp = CreateObject("Shell.Application"). _
''' * *BrowseForFolder(0, "Please select the folder where you want to
save the attachments. ", 0, OpenAt)


* *On Error Resume Next
* *BrowseForFolder = ShellApp.self.Path
* *On Error GoTo 0


* *Select Case Mid(BrowseForFolder, 2, 1)


* *Case Is = ""
* *If BrowseForFolder = "" Then
* *Exit Sub
* *End If


* *Case Is = ":"
* * * *If Left(BrowseForFolder, 1) = ":" Then
* * * * * *BrowseForFolder = ""
* * * *End If
* *Case Is = "\"
* * * *If Not Left(BrowseForFolder, 1) = "\" Then
* * * * * *BrowseForFolder = ""
* * * *End If
* *Case Else
* * * *BrowseForFolder = ""
* *End Select


'''ExitFunction:


* *Set ShellApp = Nothing


'Set oFolderDlg = oShell.BrowseForFolder(&H0, "Select the folder where
you want to save the attachments.", &H0, "C:\")


'myOrt = oFolderDlg.self.Path & "\"
myOrt = BrowseForFolder & "\"
* *On Error Resume Next


* *'work on selected items
* *Set myOlExp = myOlApp.ActiveExplorer
* *Set myOlSel = myOlExp.Selection


* *'for all items do...
* *For Each myItem In myOlSel
* * * *'point on attachments
* * * *Set myAttachments = myItem.Attachments


* * * *'if there are some...
* * * *If myAttachments.Count 0 Then


* * * * * *'add remark to message text THIS CAUSES ERROR
* * * * * *myItem.Body = myItem.Body & vbCrLf & _
* * * * * * * *"Removed Attachments:" & vbCrLf


* * * * * *'for all attachments do...
* * * * * *For i = 1 To myAttachments.Count


* * * * * * * *'save them to destination
* * * * * * * *myAttachments(i).SaveAsFile myOrt & _
* * * * * * * * * *myAttachments(i).DisplayName


* * * * * * * *'add name and destination to message text
* * * * * * * *' THE CODE BELOW GENERATES THE ERROR MESSSAGE
* * * * * * * *myItem.Body = myItem.Body & _
* * * * * * * * * *"File: " & myOrt & _
* * * * * * * * * *myAttachments(i).DisplayName & vbCrLf


* * * * * *Next i


* * * * * *'for all attachments do...
* * * * * *While myAttachments.Count 0
* * * * * * * *'remove it (use this method in Outlook XP)
* * * * * * * *myAttachments.Remove 1


* * * * * * * *'remove it (use this method in Outlook 2000)
* * * * * * * *' myAttachments(1).Delete


* * * * * *Wend


* * * * * *'save item without attachments
* * * * * *myItem.Save
* * * *End If


* *Next


* *'free variables
* *Set myItems = Nothing
* *Set myItem = Nothing
* *Set myAttachments = Nothing
* *Set myAttachment = Nothing
* *Set myOlApp = Nothing
* *Set myOlExp = Nothing
* *Set myOlSel = Nothing


End Sub


The following code works great, except some emails have multiple
attachments which have the same file name. For example, you take some
pictures with you digital camera and the camera names them,
image01.jpg, image02.jpg, you save the pictures in a folder on your
computer, erase the memory stick in the camera, take some more
pictures, again the camera names them, image01.jpg, image02.jpg,
etc., you save them in a different folder on your computer and then
attach all the photos to an email.

When the code below runs all the duplicate files are deleted without
warning.

Any ideas for coding a change to fix this would really be
appreciated. Thanks in advance.
===================== CODE BELOW ==============
Sub SaveAttachment()

'Declaration
Dim myItems, myAttachments, myAttachment As Object
Dim myItem As Outlook.MailItem
Dim myOrt As String
Set myOlApp = Application
Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection

'Ask for destination folder
Dim oShell As Object
Dim oFolderDlg As Object
Set oShell = CreateObject("Shell.Application")

Dim ShellApp As Object
Dim BrowseForFolder As String

Set ShellApp = CreateObject("Shell.Application"). _
BrowseForFolder(0, "Please select the folder where you want to
save the attachments. ", 0, "C:\")

''' Set ShellApp = CreateObject("Shell.Application"). _
''' BrowseForFolder(0, "Please select the folder where you want to
save the attachments. ", 0, OpenAt)

On Error Resume Next
BrowseForFolder = ShellApp.self.Path
On Error GoTo 0

Select Case Mid(BrowseForFolder, 2, 1)

Case Is = ""
If BrowseForFolder = "" Then
Exit Sub
End If

Case Is = ":"
If Left(BrowseForFolder, 1) = ":" Then
BrowseForFolder = ""
End If
Case Is = "\"
If Not Left(BrowseForFolder, 1) = "\" Then
BrowseForFolder = ""
End If
Case Else
BrowseForFolder = ""
End Select

'''ExitFunction:

Set ShellApp = Nothing

'Set oFolderDlg = oShell.BrowseForFolder(&H0, "Select the folder where
you want to save the attachments.", &H0, "C:\")

'myOrt = oFolderDlg.self.Path & "\"
myOrt = BrowseForFolder & "\"
On Error Resume Next

'work on selected items
Set myOlExp = myOlApp.ActiveExplorer
Set myOlSel = myOlExp.Selection

'for all items do...
For Each myItem In myOlSel
'point on attachments
Set myAttachments = myItem.Attachments

'if there are some...
If myAttachments.Count 0 Then


'for all attachments do...
For i = 1 To myAttachments.Count

'save them to destination
myAttachments(i).SaveAsFile myOrt & _
myAttachments(i).DisplayName

'add name and destination to message text
myItem.Body = "The following Attachments were removed from
this email and placed in the folder shown: " _
& myOrt & myAttachments(i).DisplayName & vbCrLf & vbCrLf &
myItem.Body

Next i

'for all attachments do...
While myAttachments.Count 0
'remove it (use this method in Outlook XP)
myAttachments.Remove 1

'remove it (use this method in Outlook 2000)
' myAttachments(1).Delete

Wend

'save item without attachments
myItem.Save
End If

Next

'free variables
Set myItems = Nothing
Set myItem = Nothing
Set myAttachments = Nothing
Set myAttachment = Nothing
Set myOlApp = Nothing
Set myOlExp = Nothing
Set myOlSel = Nothing

End Sub

  #6  
Old June 9th 09, 01:36 PM posted to microsoft.public.outlook.program_vba
Wilfried
external usenet poster
 
Posts: 9
Default save attachments macro - multiple attachments with the same file name

Am Wed, 3 Jun 2009 04:25:37 -0700 (PDT) schrieb RC:

The following code works great, except some emails have multiple
attachments which have the same file name. For example, you take some
pictures with you digital camera and the camera names them,
image01.jpg, image02.jpg, you save the pictures in a folder on your
computer, erase the memory stick in the camera, take some more
pictures, again the camera names them, image01.jpg, image02.jpg,
etc., you save them in a different folder on your computer and then
attach all the photos to an email.


"Michael Bauer [MVP - Outlook]" wrote:

You could use the Dir function and see whether a given filename already
exists; if so, add a number and search again for an existing file with the
same name; loop until you have found a 'free' file name.


or you can use the following code:

For i = 1 To myAttachments.Count
myFID = myOrt & myAttachments.Item(i).DisplayName
While myFS.FileExists(myFID)
strPrompt = myFID
myFID = InputBox("File already exists. Please enter new file name.", _
"SaveAttachment", strPrompt)
Wend
myAttachments.Item(i).SaveAsFile myFID
...



--
Wilfried Hennings
please reply in the newsgroup, the e-mail address is invalid
 




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Can I disable Outlook warning from Excel macro "Send" method wpiet Outlook and VBA 14 January 7th 09 12:54 PM
Outlook "A program is trying to access e-mail addresses..." in Vis Robin Outlook - Using Contacts 5 November 11th 08 10:28 AM
Asking to "open" or "save" when accessing Word attachments donna[_2_] Outlook - General Queries 1 November 9th 07 04:05 AM
"A program is trying to access e-mail addresses you have stored in Outlook" warning message Stroller Outlook - General Queries 8 June 20th 07 02:39 PM
How to Disable Message, "....trying to access email addresses..." fred Outlook - Using Forms 5 March 27th 06 11:44 PM


All times are GMT +1. The time now is 10:25 AM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2025 Outlook Banter.
The comments are property of their posters.