Attachment Array?

H

hlock

I am having to recreate lotus notes code into outlook code and am finding it
very difficult since I don't know coding very well. It's taken me a long
time just to get where I am using snippets from what I have found from
others. I know that what I want to do is for each attachment in a single
email, I want to save it off, "remember" the path and filename and create a
description. Then I need to use the path and filename and the description
later during the creation of an .ini file. However, I'm not doing it
correctly. I thought I should be using the string split(), but I am getting
an error msg. I have indicated the error msg below. Since our IT dept
doesn't have a lot of time to work on this, I'm trying to do it myself (lol!)
Any advice would be much appreciate. If you would like the lotus notes
script to be posted to see what was originally intended, let me know as I am
not completely done with this yet.
I am posting the whole code as I know that it is fraught with errors.
However, it's a work in progress.
Option Explicit
Public Sub initialize()
Dim fso
Dim fil
Dim objapp As Outlook.Application
Dim ns As Outlook.NameSpace
Dim ext As String
Dim tempfile As String
Dim tempdir As String
Dim path As String
Dim del As String
Dim app As String
Dim objitem As Object
Dim strsubject As String
Dim filename As String
Dim objAttachments As Outlook.attachments
Dim i As Long
Dim lngCount As Long
Dim strfile As String
Dim strsender As String
Dim strrecipient As String
Dim strCC As String
Dim strBCC As String
Dim intsent As Date
Dim strbody As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set ns = GetNamespace("MAPI")
Set objapp = CreateObject("Outlook.application")
Select Case TypeName(objapp.ActiveWindow)
Case "Explorer"
Set objitem = objapp.ActiveExplorer.Selection.item(1)
Case "Inspector"
Set objitem = objapp.ActiveInspector.CurrentItem
Case Else
'
End Select
tempdir = ("c:\temp\outlookimport")
CheckFolder
strsubject = objitem.Subject
strsender = objitem.SenderName
strrecipient = objitem.To
strCC = objitem.CC
strBCC = objitem.BCC
intsent = objitem.SentOn
strbody = objitem.Body
filename = StripIllegalChar(strsubject)
If fso.GetExtensionName(filename) = "" Then
filename = filename & ".rtf"
End If
ext = fso.GetExtensionName(filename)
path = fso.BuildPath(tempdir, filename)
objitem.SaveAs path, olRTF
Dim attachments() As String
Dim attachdescs() As String
Set objAttachments = objitem.attachments
attachments = Split(objAttachments, ",") 'getting error msg here invalid
procedure call or argument
attachdescs = Split(strsubject, ",") 'getting error msg here invalid
procedure call or argument
lngCount = objAttachments.Count
If lngCount > 0 Then
For i = lngCount To 1 Step -1
ReDim Preserve attachments(UBound(attachments) + 1)
ReDim Preserve attachdescs(UBound(attachdescs) + 1)
strfile = objAttachments.item(i).filename
strfile = Replace(strfile, " ", "_")
strfile = tempdir & "\" & strfile
objAttachments.item(i).SaveAsFile strfile
Next i
End If
Dim towfile As String
Dim fileNum As String
towfile = tempdir & "\tower.ini"
fileNum = FreeFile
Open towfile For Output As fileNum
Open towfile For Output As fileNum
Print #fileNum, "[Group1]"
Print #fileNum, "Desc=" & filename
Print #fileNum, "MultiPage=Yes"
Print #fileNum, "DeleteWhen=Always"
Print #fileNum, "DefaultApp=email"
Print #fileNum, "ShowDesc=Yes"
Print #fileNum, "EmailImport=Yes"
Print #fileNum, "MAIL_FROM=" & strsender
Print #fileNum, "MAIL_TO=" & strrecipient '
Adding the indexing info here
If strCC > "" Then
Print #fileNum, "MAIL_CC=" & strCC
Else
Print #fileNum, "MAIL_CC=NULL "
End If
If strBCC > "" Then
Print #fileNum, "MAIL_BCC=" & strBCC
Else
Print #fileNum, "MAIL_BCC=NULL"
End If
Print #fileNum, "MAIL_DATE=" & intsent
If filename > "" Then
Print #fileNum, "MAIL_SUBJECT=" & filename
Else
Print #fileNum, "MAIL_SUBJECT=NULL"
End If
If lngCount = 0 Then
Print #fileNum, "NumberOfFiles=1"
Print #fileNum, "File1=" & filename
Print #fileNum, "Desc1=" & strsubject
Else
Print #fileNum, "NumberOfFiles=" & lngCount + 1
Print #fileNum, "File1=" & filename
Print #fileNum, "Desc1=" & strsubject
Dim z As Integer
For z = 1 To lngCount
Print #fileNum, "File" & (z + 1) & "=" & attachments(z)
'File2=C:\TMP\c2.bmp
Print #fileNum, "Desc" & (z + 1) & "=" & attachdescs(z) 'This is
the message body
Next z
End If
Print #fileNum, "[General]"
Print #fileNum, "NumberofGroups=1"
Close fileNum

'Call IDMImport(towfile)
'fso.DeleteFile path, True
'Set fso = Nothing
End Sub
Function StripIllegalChar(StrInput)
Dim RegX As Object
Set RegX = CreateObject("vbscript.regexp")
RegX.Pattern = "[\" & Chr(34) &
"\!\@\#\$\%\^\&\*\(\)\=\+\|\[\]\{\}\`\'\;\:\<\>\?\/\,]"
RegX.IgnoreCase = True
RegX.Global = True
StripIllegalChar = RegX.Replace(StrInput, "")
ExitFunction:
Set RegX = Nothing
End Function
Sub CheckFolder()
Dim fso
Dim fol As String
fol = ("c:\temp\outlookimport")
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(fol) Then
fso.CreateFolder (fol)
End If
End Sub
 
M

Michael Bauer [MVP - Outlook]

objAttachments is already a collection of attachments. There's no need to
create an array for it, instead of a loop through the array just loop
through the collection:

Dim Att as Outlook.Attachment
For Each Att in objAttachments
' do anything here with the attachment
Next

--
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 Mon, 16 Nov 2009 22:19:04 -0800 schrieb hlock:
I am having to recreate lotus notes code into outlook code and am finding it
very difficult since I don't know coding very well. It's taken me a long
time just to get where I am using snippets from what I have found from
others. I know that what I want to do is for each attachment in a single
email, I want to save it off, "remember" the path and filename and create a
description. Then I need to use the path and filename and the description
later during the creation of an .ini file. However, I'm not doing it
correctly. I thought I should be using the string split(), but I am getting
an error msg. I have indicated the error msg below. Since our IT dept
doesn't have a lot of time to work on this, I'm trying to do it myself (lol!)
Any advice would be much appreciate. If you would like the lotus notes
script to be posted to see what was originally intended, let me know as I am
not completely done with this yet.
I am posting the whole code as I know that it is fraught with errors.
However, it's a work in progress.
Option Explicit
Public Sub initialize()
Dim fso
Dim fil
Dim objapp As Outlook.Application
Dim ns As Outlook.NameSpace
Dim ext As String
Dim tempfile As String
Dim tempdir As String
Dim path As String
Dim del As String
Dim app As String
Dim objitem As Object
Dim strsubject As String
Dim filename As String
Dim objAttachments As Outlook.attachments
Dim i As Long
Dim lngCount As Long
Dim strfile As String
Dim strsender As String
Dim strrecipient As String
Dim strCC As String
Dim strBCC As String
Dim intsent As Date
Dim strbody As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set ns = GetNamespace("MAPI")
Set objapp = CreateObject("Outlook.application")
Select Case TypeName(objapp.ActiveWindow)
Case "Explorer"
Set objitem = objapp.ActiveExplorer.Selection.item(1)
Case "Inspector"
Set objitem = objapp.ActiveInspector.CurrentItem
Case Else
'
End Select
tempdir = ("c:\temp\outlookimport")
CheckFolder
strsubject = objitem.Subject
strsender = objitem.SenderName
strrecipient = objitem.To
strCC = objitem.CC
strBCC = objitem.BCC
intsent = objitem.SentOn
strbody = objitem.Body
filename = StripIllegalChar(strsubject)
If fso.GetExtensionName(filename) = "" Then
filename = filename & ".rtf"
End If
ext = fso.GetExtensionName(filename)
path = fso.BuildPath(tempdir, filename)
objitem.SaveAs path, olRTF
Dim attachments() As String
Dim attachdescs() As String
Set objAttachments = objitem.attachments
attachments = Split(objAttachments, ",") 'getting error msg here invalid
procedure call or argument
attachdescs = Split(strsubject, ",") 'getting error msg here invalid
procedure call or argument
lngCount = objAttachments.Count
If lngCount > 0 Then
For i = lngCount To 1 Step -1
ReDim Preserve attachments(UBound(attachments) + 1)
ReDim Preserve attachdescs(UBound(attachdescs) + 1)
strfile = objAttachments.item(i).filename
strfile = Replace(strfile, " ", "_")
strfile = tempdir & "\" & strfile
objAttachments.item(i).SaveAsFile strfile
Next i
End If
Dim towfile As String
Dim fileNum As String
towfile = tempdir & "\tower.ini"
fileNum = FreeFile
Open towfile For Output As fileNum
Open towfile For Output As fileNum
Print #fileNum, "[Group1]"
Print #fileNum, "Desc=" & filename
Print #fileNum, "MultiPage=Yes"
Print #fileNum, "DeleteWhen=Always"
Print #fileNum, "DefaultApp=email"
Print #fileNum, "ShowDesc=Yes"
Print #fileNum, "EmailImport=Yes"
Print #fileNum, "MAIL_FROM=" & strsender
Print #fileNum, "MAIL_TO=" & strrecipient '
Adding the indexing info here
If strCC > "" Then
Print #fileNum, "MAIL_CC=" & strCC
Else
Print #fileNum, "MAIL_CC=NULL "
End If
If strBCC > "" Then
Print #fileNum, "MAIL_BCC=" & strBCC
Else
Print #fileNum, "MAIL_BCC=NULL"
End If
Print #fileNum, "MAIL_DATE=" & intsent
If filename > "" Then
Print #fileNum, "MAIL_SUBJECT=" & filename
Else
Print #fileNum, "MAIL_SUBJECT=NULL"
End If
If lngCount = 0 Then
Print #fileNum, "NumberOfFiles=1"
Print #fileNum, "File1=" & filename
Print #fileNum, "Desc1=" & strsubject
Else
Print #fileNum, "NumberOfFiles=" & lngCount + 1
Print #fileNum, "File1=" & filename
Print #fileNum, "Desc1=" & strsubject
Dim z As Integer
For z = 1 To lngCount
Print #fileNum, "File" & (z + 1) & "=" & attachments(z)
'File2=C:\TMP\c2.bmp
Print #fileNum, "Desc" & (z + 1) & "=" & attachdescs(z) 'This is
the message body
Next z
End If
Print #fileNum, "[General]"
Print #fileNum, "NumberofGroups=1"
Close fileNum

'Call IDMImport(towfile)
'fso.DeleteFile path, True
'Set fso = Nothing
End Sub
Function StripIllegalChar(StrInput)
Dim RegX As Object
Set RegX = CreateObject("vbscript.regexp")
RegX.Pattern = "[\" & Chr(34) &
"\!\@\#\$\%\^\&\*\(\)\=\+\|\[\]\{\}\`\'\;\:\<\>\?\/\,]"
RegX.IgnoreCase = True
RegX.Global = True
StripIllegalChar = RegX.Replace(StrInput, "")
ExitFunction:
Set RegX = Nothing
End Function
Sub CheckFolder()
Dim fso
Dim fol As String
fol = ("c:\temp\outlookimport")
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(fol) Then
fso.CreateFolder (fol)
End If
End Sub
 
H

hlock

Thank you. I apologize for the double post. For some reason my postings are
not showing up for me until the next day. Nontheless, where I run into
problems is further down in creating the tower.ini file.

Dim z As Integer
For z = 1 To lngCount
Print #fileNum, "File" & (z + 1) & "=" & attachments (z)
'File2=C:\TMP\c2.bmp
Print #fileNum, "Desc" & (z + 1) & "=" & attachdescs(z) 'description
Next z

Here we have to run through the attachments and list them along with a
description until all attachments have been listed. For example, there are 3
attachments (note the first file is the email) - AdjusterReport.pdf,
AdjusterPhotos.pdf, and Litigation.pdf. In creating the ini file, the
attachments need to be listed as follows:

File2=C:\temp\outlookimport\AdjusterReport.pdf
Desc2=This is the attachment#1

File3=C:\temp\outlookimport\AdjusterPhotos.pdf
Desc3=This is the attachment#2

File4=C:\temp\outlookimport\Litigation.pdf
Desc4=This is the attachment#3

How would I accomplish this?

Michael Bauer said:
objAttachments is already a collection of attachments. There's no need to
create an array for it, instead of a loop through the array just loop
through the collection:

Dim Att as Outlook.Attachment
For Each Att in objAttachments
' do anything here with the attachment
Next

--
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 Mon, 16 Nov 2009 22:19:04 -0800 schrieb hlock:
I am having to recreate lotus notes code into outlook code and am finding it
very difficult since I don't know coding very well. It's taken me a long
time just to get where I am using snippets from what I have found from
others. I know that what I want to do is for each attachment in a single
email, I want to save it off, "remember" the path and filename and create a
description. Then I need to use the path and filename and the description
later during the creation of an .ini file. However, I'm not doing it
correctly. I thought I should be using the string split(), but I am getting
an error msg. I have indicated the error msg below. Since our IT dept
doesn't have a lot of time to work on this, I'm trying to do it myself (lol!)
Any advice would be much appreciate. If you would like the lotus notes
script to be posted to see what was originally intended, let me know as I am
not completely done with this yet.
I am posting the whole code as I know that it is fraught with errors.
However, it's a work in progress.
Option Explicit
Public Sub initialize()
Dim fso
Dim fil
Dim objapp As Outlook.Application
Dim ns As Outlook.NameSpace
Dim ext As String
Dim tempfile As String
Dim tempdir As String
Dim path As String
Dim del As String
Dim app As String
Dim objitem As Object
Dim strsubject As String
Dim filename As String
Dim objAttachments As Outlook.attachments
Dim i As Long
Dim lngCount As Long
Dim strfile As String
Dim strsender As String
Dim strrecipient As String
Dim strCC As String
Dim strBCC As String
Dim intsent As Date
Dim strbody As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set ns = GetNamespace("MAPI")
Set objapp = CreateObject("Outlook.application")
Select Case TypeName(objapp.ActiveWindow)
Case "Explorer"
Set objitem = objapp.ActiveExplorer.Selection.item(1)
Case "Inspector"
Set objitem = objapp.ActiveInspector.CurrentItem
Case Else
'
End Select
tempdir = ("c:\temp\outlookimport")
CheckFolder
strsubject = objitem.Subject
strsender = objitem.SenderName
strrecipient = objitem.To
strCC = objitem.CC
strBCC = objitem.BCC
intsent = objitem.SentOn
strbody = objitem.Body
filename = StripIllegalChar(strsubject)
If fso.GetExtensionName(filename) = "" Then
filename = filename & ".rtf"
End If
ext = fso.GetExtensionName(filename)
path = fso.BuildPath(tempdir, filename)
objitem.SaveAs path, olRTF
Dim attachments() As String
Dim attachdescs() As String
Set objAttachments = objitem.attachments
attachments = Split(objAttachments, ",") 'getting error msg here invalid
procedure call or argument
attachdescs = Split(strsubject, ",") 'getting error msg here invalid
procedure call or argument
lngCount = objAttachments.Count
If lngCount > 0 Then
For i = lngCount To 1 Step -1
ReDim Preserve attachments(UBound(attachments) + 1)
ReDim Preserve attachdescs(UBound(attachdescs) + 1)
strfile = objAttachments.item(i).filename
strfile = Replace(strfile, " ", "_")
strfile = tempdir & "\" & strfile
objAttachments.item(i).SaveAsFile strfile
Next i
End If
Dim towfile As String
Dim fileNum As String
towfile = tempdir & "\tower.ini"
fileNum = FreeFile
Open towfile For Output As fileNum
Open towfile For Output As fileNum
Print #fileNum, "[Group1]"
Print #fileNum, "Desc=" & filename
Print #fileNum, "MultiPage=Yes"
Print #fileNum, "DeleteWhen=Always"
Print #fileNum, "DefaultApp=email"
Print #fileNum, "ShowDesc=Yes"
Print #fileNum, "EmailImport=Yes"
Print #fileNum, "MAIL_FROM=" & strsender
Print #fileNum, "MAIL_TO=" & strrecipient '
Adding the indexing info here
If strCC > "" Then
Print #fileNum, "MAIL_CC=" & strCC
Else
Print #fileNum, "MAIL_CC=NULL "
End If
If strBCC > "" Then
Print #fileNum, "MAIL_BCC=" & strBCC
Else
Print #fileNum, "MAIL_BCC=NULL"
End If
Print #fileNum, "MAIL_DATE=" & intsent
If filename > "" Then
Print #fileNum, "MAIL_SUBJECT=" & filename
Else
Print #fileNum, "MAIL_SUBJECT=NULL"
End If
If lngCount = 0 Then
Print #fileNum, "NumberOfFiles=1"
Print #fileNum, "File1=" & filename
Print #fileNum, "Desc1=" & strsubject
Else
Print #fileNum, "NumberOfFiles=" & lngCount + 1
Print #fileNum, "File1=" & filename
Print #fileNum, "Desc1=" & strsubject
Dim z As Integer
For z = 1 To lngCount
Print #fileNum, "File" & (z + 1) & "=" & attachments(z)
'File2=C:\TMP\c2.bmp
Print #fileNum, "Desc" & (z + 1) & "=" & attachdescs(z) 'This is
the message body
Next z
End If
Print #fileNum, "[General]"
Print #fileNum, "NumberofGroups=1"
Close fileNum

'Call IDMImport(towfile)
'fso.DeleteFile path, True
'Set fso = Nothing
End Sub
Function StripIllegalChar(StrInput)
Dim RegX As Object
Set RegX = CreateObject("vbscript.regexp")
RegX.Pattern = "[\" & Chr(34) &
"\!\@\#\$\%\^\&\*\(\)\=\+\|\[\]\{\}\`\'\;\:\<\>\?\/\,]"
RegX.IgnoreCase = True
RegX.Global = True
StripIllegalChar = RegX.Replace(StrInput, "")
ExitFunction:
Set RegX = Nothing
End Function
Sub CheckFolder()
Dim fso
Dim fol As String
fol = ("c:\temp\outlookimport")
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(fol) Then
fso.CreateFolder (fol)
End If
End Sub
.
 
M

Michael Bauer [MVP - Outlook]

Here's an example for how to write a file:
http://www.vboffice.net/sample.html?lang=en&mnu=1&smp=14&cmd=showitem

Attachments(z) returns an Attachment object. Please see the object browser
(f2) for what properties are available: switch from <All libraries> to
Outlook, and left hand select 'Attachment'.

Before you can read the attachment's path, you need to save it as a file.

--
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 Tue, 17 Nov 2009 07:36:01 -0800 schrieb hlock:
Thank you. I apologize for the double post. For some reason my postings are
not showing up for me until the next day. Nontheless, where I run into
problems is further down in creating the tower.ini file.

Dim z As Integer
For z = 1 To lngCount
Print #fileNum, "File" & (z + 1) & "=" & attachments (z)
'File2=C:\TMP\c2.bmp
Print #fileNum, "Desc" & (z + 1) & "=" & attachdescs(z) 'description
Next z

Here we have to run through the attachments and list them along with a
description until all attachments have been listed. For example, there are 3
attachments (note the first file is the email) - AdjusterReport.pdf,
AdjusterPhotos.pdf, and Litigation.pdf. In creating the ini file, the
attachments need to be listed as follows:

File2=C:\temp\outlookimport\AdjusterReport.pdf
Desc2=This is the attachment#1

File3=C:\temp\outlookimport\AdjusterPhotos.pdf
Desc3=This is the attachment#2

File4=C:\temp\outlookimport\Litigation.pdf
Desc4=This is the attachment#3

How would I accomplish this?

Michael Bauer said:
objAttachments is already a collection of attachments. There's no need to
create an array for it, instead of a loop through the array just loop
through the collection:

Dim Att as Outlook.Attachment
For Each Att in objAttachments
' do anything here with the attachment
Next

--
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 Mon, 16 Nov 2009 22:19:04 -0800 schrieb hlock:
I am having to recreate lotus notes code into outlook code and am
finding
it
very difficult since I don't know coding very well. It's taken me a long
time just to get where I am using snippets from what I have found from
others. I know that what I want to do is for each attachment in a single
email, I want to save it off, "remember" the path and filename and
create
a
description. Then I need to use the path and filename and the description
later during the creation of an .ini file. However, I'm not doing it
correctly. I thought I should be using the string split(), but I am getting
an error msg. I have indicated the error msg below. Since our IT dept
doesn't have a lot of time to work on this, I'm trying to do it myself (lol!)
Any advice would be much appreciate. If you would like the lotus notes
script to be posted to see what was originally intended, let me know as
I
am
not completely done with this yet.
I am posting the whole code as I know that it is fraught with errors.
However, it's a work in progress.
Option Explicit
Public Sub initialize()
Dim fso
Dim fil
Dim objapp As Outlook.Application
Dim ns As Outlook.NameSpace
Dim ext As String
Dim tempfile As String
Dim tempdir As String
Dim path As String
Dim del As String
Dim app As String
Dim objitem As Object
Dim strsubject As String
Dim filename As String
Dim objAttachments As Outlook.attachments
Dim i As Long
Dim lngCount As Long
Dim strfile As String
Dim strsender As String
Dim strrecipient As String
Dim strCC As String
Dim strBCC As String
Dim intsent As Date
Dim strbody As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set ns = GetNamespace("MAPI")
Set objapp = CreateObject("Outlook.application")
Select Case TypeName(objapp.ActiveWindow)
Case "Explorer"
Set objitem = objapp.ActiveExplorer.Selection.item(1)
Case "Inspector"
Set objitem = objapp.ActiveInspector.CurrentItem
Case Else
'
End Select
tempdir = ("c:\temp\outlookimport")
CheckFolder
strsubject = objitem.Subject
strsender = objitem.SenderName
strrecipient = objitem.To
strCC = objitem.CC
strBCC = objitem.BCC
intsent = objitem.SentOn
strbody = objitem.Body
filename = StripIllegalChar(strsubject)
If fso.GetExtensionName(filename) = "" Then
filename = filename & ".rtf"
End If
ext = fso.GetExtensionName(filename)
path = fso.BuildPath(tempdir, filename)
objitem.SaveAs path, olRTF
Dim attachments() As String
Dim attachdescs() As String
Set objAttachments = objitem.attachments
attachments = Split(objAttachments, ",") 'getting error msg here invalid
procedure call or argument
attachdescs = Split(strsubject, ",") 'getting error msg here invalid
procedure call or argument
lngCount = objAttachments.Count
If lngCount > 0 Then
For i = lngCount To 1 Step -1
ReDim Preserve attachments(UBound(attachments) + 1)
ReDim Preserve attachdescs(UBound(attachdescs) + 1)
strfile = objAttachments.item(i).filename
strfile = Replace(strfile, " ", "_")
strfile = tempdir & "\" & strfile
objAttachments.item(i).SaveAsFile strfile
Next i
End If
Dim towfile As String
Dim fileNum As String
towfile = tempdir & "\tower.ini"
fileNum = FreeFile
Open towfile For Output As fileNum
Open towfile For Output As fileNum
Print #fileNum, "[Group1]"
Print #fileNum, "Desc=" & filename
Print #fileNum, "MultiPage=Yes"
Print #fileNum, "DeleteWhen=Always"
Print #fileNum, "DefaultApp=email"
Print #fileNum, "ShowDesc=Yes"
Print #fileNum, "EmailImport=Yes"
Print #fileNum, "MAIL_FROM=" & strsender
Print #fileNum, "MAIL_TO=" & strrecipient '
Adding the indexing info here
If strCC > "" Then
Print #fileNum, "MAIL_CC=" & strCC
Else
Print #fileNum, "MAIL_CC=NULL "
End If
If strBCC > "" Then
Print #fileNum, "MAIL_BCC=" & strBCC
Else
Print #fileNum, "MAIL_BCC=NULL"
End If
Print #fileNum, "MAIL_DATE=" & intsent
If filename > "" Then
Print #fileNum, "MAIL_SUBJECT=" & filename
Else
Print #fileNum, "MAIL_SUBJECT=NULL"
End If
If lngCount = 0 Then
Print #fileNum, "NumberOfFiles=1"
Print #fileNum, "File1=" & filename
Print #fileNum, "Desc1=" & strsubject
Else
Print #fileNum, "NumberOfFiles=" & lngCount + 1
Print #fileNum, "File1=" & filename
Print #fileNum, "Desc1=" & strsubject
Dim z As Integer
For z = 1 To lngCount
Print #fileNum, "File" & (z + 1) & "=" & attachments(z)
'File2=C:\TMP\c2.bmp
Print #fileNum, "Desc" & (z + 1) & "=" & attachdescs(z)
'This
is
the message body
Next z
End If
Print #fileNum, "[General]"
Print #fileNum, "NumberofGroups=1"
Close fileNum

'Call IDMImport(towfile)
'fso.DeleteFile path, True
'Set fso = Nothing
End Sub
Function StripIllegalChar(StrInput)
Dim RegX As Object
Set RegX = CreateObject("vbscript.regexp")
RegX.Pattern = "[\" & Chr(34) &
"\!\@\#\$\%\^\&\*\(\)\=\+\|\[\]\{\}\`\'\;\:\<\>\?\/\,]"
RegX.IgnoreCase = True
RegX.Global = True
StripIllegalChar = RegX.Replace(StrInput, "")
ExitFunction:
Set RegX = Nothing
End Function
Sub CheckFolder()
Dim fso
Dim fol As String
fol = ("c:\temp\outlookimport")
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(fol) Then
fso.CreateFolder (fol)
End If
End Sub
.
 
H

hlock

I'm making progress, but my (z) numbers aren't increasing with the addition
of attachments:

Dim att As Outlook.Attachment
Dim z As Integer
Dim attfile As String
'For z = 1 To lngCount
z = 1
For Each att In objAttachments
attfile = att.filename
attfile = Replace(attfile, " ", "_")
attfile = tempdir & "\" & attfile
Print #fileNum, "File" & (z + 1) & "=" & attfile
Print #fileNum, "Desc" & (z + 1) & "=" & "This is the
attachment#" & (z)
Next att

I'm getting:
File2=C:\temp\outlookimport\AdjusterReport.pdf
Desc2=This is the attachment#1

File2=C:\temp\outlookimport\AdjusterPhotos.pdf
Desc2=This is the attachment#1

How do I get the (z) numbers to increase? Thanks!!!

hlock said:
Thank you. I apologize for the double post. For some reason my postings are
not showing up for me until the next day. Nontheless, where I run into
problems is further down in creating the tower.ini file.

Dim z As Integer
For z = 1 To lngCount
Print #fileNum, "File" & (z + 1) & "=" & attachments (z)
'File2=C:\TMP\c2.bmp
Print #fileNum, "Desc" & (z + 1) & "=" & attachdescs(z) 'description
Next z
Here we have to run through the attachments and list them along with a
description until all attachments have been listed. For example, there are 3
attachments (note the first file is the email) - AdjusterReport.pdf,
AdjusterPhotos.pdf, and Litigation.pdf. In creating the ini file, the
attachments need to be listed as follows:

File2=C:\temp\outlookimport\AdjusterReport.pdf
Desc2=This is the attachment#1

File3=C:\temp\outlookimport\AdjusterPhotos.pdf
Desc3=This is the attachment#2

File4=C:\temp\outlookimport\Litigation.pdf
Desc4=This is the attachment#3

How would I accomplish this?

Michael Bauer said:
objAttachments is already a collection of attachments. There's no need to
create an array for it, instead of a loop through the array just loop
through the collection:

Dim Att as Outlook.Attachment
For Each Att in objAttachments
' do anything here with the attachment
Next

--
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 Mon, 16 Nov 2009 22:19:04 -0800 schrieb hlock:
I am having to recreate lotus notes code into outlook code and am finding it
very difficult since I don't know coding very well. It's taken me a long
time just to get where I am using snippets from what I have found from
others. I know that what I want to do is for each attachment in a single
email, I want to save it off, "remember" the path and filename and create a
description. Then I need to use the path and filename and the description
later during the creation of an .ini file. However, I'm not doing it
correctly. I thought I should be using the string split(), but I am getting
an error msg. I have indicated the error msg below. Since our IT dept
doesn't have a lot of time to work on this, I'm trying to do it myself (lol!)
Any advice would be much appreciate. If you would like the lotus notes
script to be posted to see what was originally intended, let me know as I am
not completely done with this yet.
I am posting the whole code as I know that it is fraught with errors.
However, it's a work in progress.
Option Explicit
Public Sub initialize()
Dim fso
Dim fil
Dim objapp As Outlook.Application
Dim ns As Outlook.NameSpace
Dim ext As String
Dim tempfile As String
Dim tempdir As String
Dim path As String
Dim del As String
Dim app As String
Dim objitem As Object
Dim strsubject As String
Dim filename As String
Dim objAttachments As Outlook.attachments
Dim i As Long
Dim lngCount As Long
Dim strfile As String
Dim strsender As String
Dim strrecipient As String
Dim strCC As String
Dim strBCC As String
Dim intsent As Date
Dim strbody As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set ns = GetNamespace("MAPI")
Set objapp = CreateObject("Outlook.application")
Select Case TypeName(objapp.ActiveWindow)
Case "Explorer"
Set objitem = objapp.ActiveExplorer.Selection.item(1)
Case "Inspector"
Set objitem = objapp.ActiveInspector.CurrentItem
Case Else
'
End Select
tempdir = ("c:\temp\outlookimport")
CheckFolder
strsubject = objitem.Subject
strsender = objitem.SenderName
strrecipient = objitem.To
strCC = objitem.CC
strBCC = objitem.BCC
intsent = objitem.SentOn
strbody = objitem.Body
filename = StripIllegalChar(strsubject)
If fso.GetExtensionName(filename) = "" Then
filename = filename & ".rtf"
End If
ext = fso.GetExtensionName(filename)
path = fso.BuildPath(tempdir, filename)
objitem.SaveAs path, olRTF
Dim attachments() As String
Dim attachdescs() As String
Set objAttachments = objitem.attachments
attachments = Split(objAttachments, ",") 'getting error msg here invalid
procedure call or argument
attachdescs = Split(strsubject, ",") 'getting error msg here invalid
procedure call or argument
lngCount = objAttachments.Count
If lngCount > 0 Then
For i = lngCount To 1 Step -1
ReDim Preserve attachments(UBound(attachments) + 1)
ReDim Preserve attachdescs(UBound(attachdescs) + 1)
strfile = objAttachments.item(i).filename
strfile = Replace(strfile, " ", "_")
strfile = tempdir & "\" & strfile
objAttachments.item(i).SaveAsFile strfile
Next i
End If
Dim towfile As String
Dim fileNum As String
towfile = tempdir & "\tower.ini"
fileNum = FreeFile
Open towfile For Output As fileNum
Open towfile For Output As fileNum
Print #fileNum, "[Group1]"
Print #fileNum, "Desc=" & filename
Print #fileNum, "MultiPage=Yes"
Print #fileNum, "DeleteWhen=Always"
Print #fileNum, "DefaultApp=email"
Print #fileNum, "ShowDesc=Yes"
Print #fileNum, "EmailImport=Yes"
Print #fileNum, "MAIL_FROM=" & strsender
Print #fileNum, "MAIL_TO=" & strrecipient '
Adding the indexing info here
If strCC > "" Then
Print #fileNum, "MAIL_CC=" & strCC
Else
Print #fileNum, "MAIL_CC=NULL "
End If
If strBCC > "" Then
Print #fileNum, "MAIL_BCC=" & strBCC
Else
Print #fileNum, "MAIL_BCC=NULL"
End If
Print #fileNum, "MAIL_DATE=" & intsent
If filename > "" Then
Print #fileNum, "MAIL_SUBJECT=" & filename
Else
Print #fileNum, "MAIL_SUBJECT=NULL"
End If
If lngCount = 0 Then
Print #fileNum, "NumberOfFiles=1"
Print #fileNum, "File1=" & filename
Print #fileNum, "Desc1=" & strsubject
Else
Print #fileNum, "NumberOfFiles=" & lngCount + 1
Print #fileNum, "File1=" & filename
Print #fileNum, "Desc1=" & strsubject
Dim z As Integer
For z = 1 To lngCount
Print #fileNum, "File" & (z + 1) & "=" & attachments(z)
'File2=C:\TMP\c2.bmp
Print #fileNum, "Desc" & (z + 1) & "=" & attachdescs(z) 'This is
the message body
Next z
End If
Print #fileNum, "[General]"
Print #fileNum, "NumberofGroups=1"
Close fileNum

'Call IDMImport(towfile)
'fso.DeleteFile path, True
'Set fso = Nothing
End Sub
Function StripIllegalChar(StrInput)
Dim RegX As Object
Set RegX = CreateObject("vbscript.regexp")
RegX.Pattern = "[\" & Chr(34) &
"\!\@\#\$\%\^\&\*\(\)\=\+\|\[\]\{\}\`\'\;\:\<\>\?\/\,]"
RegX.IgnoreCase = True
RegX.Global = True
StripIllegalChar = RegX.Replace(StrInput, "")
ExitFunction:
Set RegX = Nothing
End Function
Sub CheckFolder()
Dim fso
Dim fol As String
fol = ("c:\temp\outlookimport")
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(fol) Then
fso.CreateFolder (fol)
End If
End Sub
.
 
M

Michael Bauer [MVP - Outlook]

Either:

For z=1 to CountWhatever
set att=objAttachments(z)
Next

or:

For Each att in objAttachments
z=z+1
next

--
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 Tue, 17 Nov 2009 12:53:02 -0800 schrieb hlock:
I'm making progress, but my (z) numbers aren't increasing with the addition
of attachments:

Dim att As Outlook.Attachment
Dim z As Integer
Dim attfile As String
'For z = 1 To lngCount
z = 1
For Each att In objAttachments
attfile = att.filename
attfile = Replace(attfile, " ", "_")
attfile = tempdir & "\" & attfile
Print #fileNum, "File" & (z + 1) & "=" & attfile
Print #fileNum, "Desc" & (z + 1) & "=" & "This is the
attachment#" & (z)
Next att

I'm getting:
File2=C:\temp\outlookimport\AdjusterReport.pdf
Desc2=This is the attachment#1

File2=C:\temp\outlookimport\AdjusterPhotos.pdf
Desc2=This is the attachment#1

How do I get the (z) numbers to increase? Thanks!!!

hlock said:
Thank you. I apologize for the double post. For some reason my postings are
not showing up for me until the next day. Nontheless, where I run into
problems is further down in creating the tower.ini file.

Dim z As Integer
For z = 1 To lngCount
Print #fileNum, "File" & (z + 1) & "=" & attachments (z)
'File2=C:\TMP\c2.bmp
Print #fileNum, "Desc" & (z + 1) & "=" & attachdescs(z) 'description
Next z
Here we have to run through the attachments and list them along with a
description until all attachments have been listed. For example, there are 3
attachments (note the first file is the email) - AdjusterReport.pdf,
AdjusterPhotos.pdf, and Litigation.pdf. In creating the ini file, the
attachments need to be listed as follows:

File2=C:\temp\outlookimport\AdjusterReport.pdf
Desc2=This is the attachment#1

File3=C:\temp\outlookimport\AdjusterPhotos.pdf
Desc3=This is the attachment#2

File4=C:\temp\outlookimport\Litigation.pdf
Desc4=This is the attachment#3

How would I accomplish this?

Michael Bauer said:
objAttachments is already a collection of attachments. There's no need to
create an array for it, instead of a loop through the array just loop
through the collection:

Dim Att as Outlook.Attachment
For Each Att in objAttachments
' do anything here with the attachment
Next

--
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 Mon, 16 Nov 2009 22:19:04 -0800 schrieb hlock:

I am having to recreate lotus notes code into outlook code and am finding
it
very difficult since I don't know coding very well. It's taken me a long
time just to get where I am using snippets from what I have found from
others. I know that what I want to do is for each attachment in a single
email, I want to save it off, "remember" the path and filename and create
a
description. Then I need to use the path and filename and the description
later during the creation of an .ini file. However, I'm not doing it
correctly. I thought I should be using the string split(), but I am
getting
an error msg. I have indicated the error msg below. Since our IT dept
doesn't have a lot of time to work on this, I'm trying to do it myself
(lol!)
Any advice would be much appreciate. If you would like the lotus notes
script to be posted to see what was originally intended, let me know as I
am
not completely done with this yet.
I am posting the whole code as I know that it is fraught with errors.
However, it's a work in progress.
Option Explicit
Public Sub initialize()
Dim fso
Dim fil
Dim objapp As Outlook.Application
Dim ns As Outlook.NameSpace
Dim ext As String
Dim tempfile As String
Dim tempdir As String
Dim path As String
Dim del As String
Dim app As String
Dim objitem As Object
Dim strsubject As String
Dim filename As String
Dim objAttachments As Outlook.attachments
Dim i As Long
Dim lngCount As Long
Dim strfile As String
Dim strsender As String
Dim strrecipient As String
Dim strCC As String
Dim strBCC As String
Dim intsent As Date
Dim strbody As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set ns = GetNamespace("MAPI")
Set objapp = CreateObject("Outlook.application")
Select Case TypeName(objapp.ActiveWindow)
Case "Explorer"
Set objitem = objapp.ActiveExplorer.Selection.item(1)
Case "Inspector"
Set objitem = objapp.ActiveInspector.CurrentItem
Case Else
'
End Select
tempdir = ("c:\temp\outlookimport")
CheckFolder
strsubject = objitem.Subject
strsender = objitem.SenderName
strrecipient = objitem.To
strCC = objitem.CC
strBCC = objitem.BCC
intsent = objitem.SentOn
strbody = objitem.Body
filename = StripIllegalChar(strsubject)
If fso.GetExtensionName(filename) = "" Then
filename = filename & ".rtf"
End If
ext = fso.GetExtensionName(filename)
path = fso.BuildPath(tempdir, filename)
objitem.SaveAs path, olRTF
Dim attachments() As String
Dim attachdescs() As String
Set objAttachments = objitem.attachments
attachments = Split(objAttachments, ",") 'getting error msg here
invalid
procedure call or argument
attachdescs = Split(strsubject, ",") 'getting error msg here
invalid
procedure call or argument
lngCount = objAttachments.Count
If lngCount > 0 Then
For i = lngCount To 1 Step -1
ReDim Preserve attachments(UBound(attachments) + 1)
ReDim Preserve attachdescs(UBound(attachdescs) + 1)
strfile = objAttachments.item(i).filename
strfile = Replace(strfile, " ", "_")
strfile = tempdir & "\" & strfile
objAttachments.item(i).SaveAsFile strfile
Next i
End If
Dim towfile As String
Dim fileNum As String
towfile = tempdir & "\tower.ini"
fileNum = FreeFile
Open towfile For Output As fileNum
Open towfile For Output As fileNum
Print #fileNum, "[Group1]"
Print #fileNum, "Desc=" & filename
Print #fileNum, "MultiPage=Yes"
Print #fileNum, "DeleteWhen=Always"
Print #fileNum, "DefaultApp=email"
Print #fileNum, "ShowDesc=Yes"
Print #fileNum, "EmailImport=Yes"
Print #fileNum, "MAIL_FROM=" & strsender
Print #fileNum, "MAIL_TO=" & strrecipient '
Adding the indexing info here
If strCC > "" Then
Print #fileNum, "MAIL_CC=" & strCC
Else
Print #fileNum, "MAIL_CC=NULL "
End If
If strBCC > "" Then
Print #fileNum, "MAIL_BCC=" & strBCC
Else
Print #fileNum, "MAIL_BCC=NULL"
End If
Print #fileNum, "MAIL_DATE=" & intsent
If filename > "" Then
Print #fileNum, "MAIL_SUBJECT=" & filename
Else
Print #fileNum, "MAIL_SUBJECT=NULL"
End If
If lngCount = 0 Then
Print #fileNum, "NumberOfFiles=1"
Print #fileNum, "File1=" & filename
Print #fileNum, "Desc1=" & strsubject
Else
Print #fileNum, "NumberOfFiles=" & lngCount + 1
Print #fileNum, "File1=" & filename
Print #fileNum, "Desc1=" & strsubject
Dim z As Integer
For z = 1 To lngCount
Print #fileNum, "File" & (z + 1) & "=" & attachments(z)
'File2=C:\TMP\c2.bmp
Print #fileNum, "Desc" & (z + 1) & "=" & attachdescs(z) 'This
is
the message body
Next z
End If
Print #fileNum, "[General]"
Print #fileNum, "NumberofGroups=1"
Close fileNum

'Call IDMImport(towfile)
'fso.DeleteFile path, True
'Set fso = Nothing
End Sub
Function StripIllegalChar(StrInput)
Dim RegX As Object
Set RegX = CreateObject("vbscript.regexp")
RegX.Pattern = "[\" & Chr(34) &
"\!\@\#\$\%\^\&\*\(\)\=\+\|\[\]\{\}\`\'\;\:\<\>\?\/\,]"
RegX.IgnoreCase = True
RegX.Global = True
StripIllegalChar = RegX.Replace(StrInput, "")
ExitFunction:
Set RegX = Nothing
End Function
Sub CheckFolder()
Dim fso
Dim fol As String
fol = ("c:\temp\outlookimport")
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(fol) Then
fso.CreateFolder (fol)
End If
End Sub
.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top