Lyle wrote:
>My code has worked for a long time. Perhaps. if you posted your use of the
code, completely, we could help each other understand what the other is
talking about.
MLH wrote:
Sure, no problem. I cut 'n pasted this from A97 module created to hold
only the declarations and 3 procedures shown below...
Option Compare Database
Option Explicit
'************************************************* ***********************************
' Retrieved from
http://ffdba.com/downloads/Send_Mail...ok_Express.htm
'************************************************* ***********************************
Private Type MapiRecip
Reserved As Long
RecipClass As Long
Name As String
Address As String
EIDSize As Long
EntryID As Long
End Type
Private Type MAPIFileDesc
Reserved As Long
flags As Long
Position As Long
PathName As String
fileName As String
FileType As Long
End Type
Private Type MAPIMessage
Reserved As Long
Subject As String
NoteText As String
MessageType As String
DateReceived As String
ConversationID As String
Originator As Long
flags As Long
RecipCount As Long
Recipients As Long
FileCount As Long
Files As Long
End Type
Declare Function MAPISendMail _
Lib "c:\program files\outlook express\msoe.dll" ( _
ByVal Session As Long, _
ByVal UIParam As Long, _
Message As MAPIMessage, _
ByVal flags As Long, _
ByVal Reserved As Long) As Long
Public Sub SendMailPlusWithOE(ByVal vSubject As String, _
ByVal vMessage As String, _
ByRef vRecipients As String, _
Optional ByVal vFiles As String)
Dim aFiles() As String
Dim aRecips() As String
Dim FilePaths() As MAPIFileDesc
Dim Recips() As MapiRecip
Dim Message As MAPIMessage
Dim z As Long
'THE FOLLOWING LINE WON'T COMPILE & I HAD TO REM IT OUT UNTIL I CAN
GET A FIX
' aFiles = SplitB(vFiles, ",") 'aFiles is an array. vFiles is a
string of quoted, comma-delimited filenames (incl full paths)
ReDim FilePaths(LBound(aFiles) To UBound(aFiles))
For z = LBound(aFiles) To UBound(aFiles)
With FilePaths(z)
.Position = -1
.PathName = StrConv(aFiles(z), vbFromUnicode)
End With
Next z
'THE FOLLOWING LINE WON'T COMPILE & I HAD TO REM IT OUT UNTIL I CAN
GET A FIX
' aRecips = SplitB(vRecipients, ",")
ReDim Recips(LBound(aRecips) To UBound(aRecips))
For z = LBound(aRecips) To UBound(aRecips)
With Recips(z)
.RecipClass = 1
If InStr(aRecips(z), "@") <0 Then
.Address = StrConv(aRecips(z), vbFromUnicode)
Else
.Name = StrConv(aRecips(z), vbFromUnicode)
End If
End With
Next z
With Message
.FileCount = UBound(FilePaths) - LBound(FilePaths) + 1
.Files = VarPtr(FilePaths(LBound(FilePaths)))
.NoteText = vMessage
.RecipCount = UBound(Recips) - LBound(Recips) + 1
.Recipients = VarPtr(Recips(LBound(Recips)))
.Subject = vSubject
End With
MAPISendMail 0, 0, Message, 0, 0
End Sub
Private Sub Test_SendMailPlusWithOE()
Dim aFiles() As Variant
Dim aRecips() As String
Dim Files As String
Dim Message As String
Dim Recipients As String
Dim Subject As String
' not required
Files = "C:\WS_FTP.LOG"
Files = Files & "," & "C:\TreeGuys.txt"
' required
Recipients = "cr**@northstate.net"
' not required
Recipients = Recipients & "," & "Ki***********@ComCast.net"
Message = "If you get this, please throw it away. It is a test."
Subject = "Test"
SendMailPlusWithOE Subject, Message, Recipients, Files
End Sub
Public Function SplitB(ByVal SplitString As String, ByVal Delimiter As
String) As Variant
Dim Position As Long, i As Integer
Dim aSplit() As Variant
Dim Dimension As Long
Position = InStr(SplitString, Delimiter)
Do While Position <0
ReDim Preserve aSplit(Dimension)
aSplit(UBound(aSplit)) = Trim(left(SplitString, Position - 1))
For i = 0 To UBound(aSplit): Debug.Print aSplit(i): Next i
SplitString = Mid$(SplitString, Position + 1)
Dimension = Dimension + 1
Position = InStr(SplitString, Delimiter)
Loop
ReDim Preserve aSplit(Dimension)
aSplit(Dimension) = Trim(SplitString)
SplitB = aSplit
End Function
Lyle, to date, my "use of the code, completely" has been limited
to calling Private Sub Test_SendMailPlusWithOE() furnished on the
site. When I do run it the Type MisMatch error is reported when last
functional line of code in the SplitB procedure is executed. Maybe
I didn't copy everything I was supposed to - I don't think so - but
let me know if that's the case.