J'envoi des mail avec Access via la méthode MAPI (code ci dessous, copié sur
un des site des MVP qui nous aident, qu'ils en soient remerciés, mais je ne
sais plus à qui)
la fonction SendMail retourne un numero d'erreur (le 2), mais je ne sais pas
à quoi cela correspond
Quelqu'un sait ou trouver les descriptions d'erreurs selon le numero?
Merci pour toute aide.
'Declare Special Types for use with MAPI
Type MAPIMessage
Reserved As Long
Subject As String
NoteText As String
MessageType As String
DateReceived As String
ConversationID As String
Flags As Long
RecipCount As Long
FileCount As Long
End Type
Type MapiRecip
Reserved As Long
RecipClass As Long
Name As String
Address As String
EIDSize As Long
EntryID As String
End Type
Type MapiFile
Reserved As Long
Flags As Long
Position As Long
PathName As String
FileName As String
FileType As String
End Type
Global Dialogue As MAPIMessage
'DLL Functions in MAPI module
Declare Function MAPISendMailOE _
Lib "C:\Program Files\Outlook Express\Msoe.dll" _
Alias "BMAPISendMail" _
(ByVal Session&, _
ByVal UIParam&, _
Message As MAPIMessage, _
Recipient() As MapiRecip, _
File() As MapiFile, _
ByVal Flags&, _
ByVal Reserved&) As Long
Declare Function MAPISendMail _
Lib "MAPI32.DLL" _
Alias "BMAPISendMail" (ByVal Session&, _
ByVal UIParam&, _
Message As MAPIMessage, _
Recipient() As MapiRecip, _
File() As MapiFile, _
ByVal Flags&, _
ByVal Reserved&) As Long
Global Const SUCCESS_SUCCESS = 0
Global Const MAPI_TO = 1
Global Const MAPI_CC = 2
Global Const MAPI_CCO = 3
Global Const MAPI_LOGON_UI = &H1
Global Const MAPI_DIALOG = &H8
' FUNCTION NAME: SendMail
'
' Usage:
' This is the front-end function to the MAPISendMail function. You
' pass a semicolon-delimited list of To and CC recipients, a
' subject, a message, and a delimited list of file attachments.
' This function prepares MapiRecip and MapiFile structures with the
' data parsed from the information provided using the ParseRecord
' sub. Once the structures are prepared, the MAPISendMail function
' is called to send the message.
'
' INPUT PARAMETERS:
' sSubject: The text to appear in the subject line of the message
' sTo: Semicolon-delimited list of names to receive the
' message
' sCC: Semicolon-delimited list of names to be CC'd
' sCCO: Semicolon-delimited list of names to be CCO'd
' sAttach: Semicolon-delimited list of files to attach to
' the message
' RETURN
' SUCCESS_SUCCESS if successful, or a MAPI error if not.
'*************************************************************
Function SendMail(sSubject As String, _
sTo As String, _
sCC As String, _
sCCO As String, _
sAttach As String, _
sMessage As String, _
Optional sImmediateSend As Boolean = True) _
As Long
Dim i, cTo, cCC, cCCO, cAttach ' variables holding counts
Dim MAPI_Message As MAPIMessage
' Count the number of items in each piece of the mail message
cTo = CountWords(sTo, ";")
cCC = CountWords(sCC, ";")
cCCO = CountWords(sCCO, ";")
cAttach = CountWords(sAttach, ";")
' Create arrays to store the semicolon delimited mailing
' .. information after it is parsed
ReDim rTo(0 To cTo) As String
ReDim rCC(0 To cCC) As String
ReDim rCCO(0 To cCCO) As String
ReDim rAttach(0 To cAttach) As String
' Parse the semicolon delimited information into the arrays.
ParseWords rTo(), sTo, ";"
ParseWords rCC(), sCC, ";"
ParseWords rCCO(), sCCO, ";"
ParseWords rAttach(), sAttach, ";"
' Create the MAPI Recip structure to store all the To and CC
' .. information to be passed to the MAPISendMail function
ReDim MAPI_Recip(0 To cTo + cCC + cCCO - 1) As MapiRecip
' Setup the "TO:" recipient structures
For i = 0 To cTo - 1
MAPI_Recip(i).Name = rTo(i)
MAPI_Recip(i).RecipClass = MAPI_TO
Next i
' Setup the "CC:" recipient structures
For i = 0 To cCC - 1
MAPI_Recip(cTo + i).Name = rCC(i)
MAPI_Recip(cTo + i).RecipClass = MAPI_CC
Next i
' Setup the "CCO:" recipient structures
For i = 0 To cCCO - 1
MAPI_Recip(cTo + cCC + i).Name = rCCO(i)
MAPI_Recip(cTo + cCC + i).RecipClass = MAPI_CCO
Next i
' Create the MAPI File structure to store all the file attachment
' .. information to be passed to the MAPISendMail function
ReDim MAPI_File(0 To cAttach) As MapiFile
' Setup the file attachment structures
MAPI_Message.FileCount = cAttach
For i = 0 To cAttach - 1
MAPI_File(i).Position = -1
MAPI_File(i).PathName = rAttach(i)
Next i
' Set the mail message fields
MAPI_Message.Subject = sSubject
MAPI_Message.NoteText = sMessage
MAPI_Message.RecipCount = cTo + cCC + cCCO
' Define Immediate_Sending Option
If sImmediateSend = True Then
Dialogue.Flags = MAPI_LOGON_UI
Else
Dialogue.Flags = MAPI_LOGON_UI + MAPI_DIALOG
End If
'Send the mail message
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Bonjour
Quel est ton client mail par défaut, version si Outlook, version de windows et version d'Access ? Sur quel site l'as tu trouvée ? (on dirait un clone de la fonction originelle) As-tu essayé l'une des bases exemples disponibles sur http://users.skynet.be/accesshome/ah_outlook_sendmailmapi.htm ? As tu bien installé les fonctions auxiliaires Getwords et Parewords ?
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le message de news:
| Amis du Forum, bonjours | | J'envoi des mail avec Access via la méthode MAPI (code ci dessous, copié sur | un des site des MVP qui nous aident, qu'ils en soient remerciés, mais je ne | sais plus à qui) | | la fonction SendMail retourne un numero d'erreur (le 2), mais je ne sais pas | à quoi cela correspond | | Quelqu'un sait ou trouver les descriptions d'erreurs selon le numero? | | Merci pour toute aide. | | | ' FUNCTION NAME: SendMail
Bonjour
Quel est ton client mail par défaut, version si Outlook, version de windows et version d'Access
?
Sur quel site l'as tu trouvée ? (on dirait un clone de la fonction originelle)
As-tu essayé l'une des bases exemples disponibles sur
http://users.skynet.be/accesshome/ah_outlook_sendmailmapi.htm ?
As tu bien installé les fonctions auxiliaires Getwords et Parewords ?
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le message de news:
edmvuoGhFHA.572@TK2MSFTNGP15.phx.gbl...
| Amis du Forum, bonjours
|
| J'envoi des mail avec Access via la méthode MAPI (code ci dessous, copié sur
| un des site des MVP qui nous aident, qu'ils en soient remerciés, mais je ne
| sais plus à qui)
|
| la fonction SendMail retourne un numero d'erreur (le 2), mais je ne sais pas
| à quoi cela correspond
|
| Quelqu'un sait ou trouver les descriptions d'erreurs selon le numero?
|
| Merci pour toute aide.
|
|
| ' FUNCTION NAME: SendMail
Quel est ton client mail par défaut, version si Outlook, version de windows et version d'Access ? Sur quel site l'as tu trouvée ? (on dirait un clone de la fonction originelle) As-tu essayé l'une des bases exemples disponibles sur http://users.skynet.be/accesshome/ah_outlook_sendmailmapi.htm ? As tu bien installé les fonctions auxiliaires Getwords et Parewords ?
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le message de news:
| Amis du Forum, bonjours | | J'envoi des mail avec Access via la méthode MAPI (code ci dessous, copié sur | un des site des MVP qui nous aident, qu'ils en soient remerciés, mais je ne | sais plus à qui) | | la fonction SendMail retourne un numero d'erreur (le 2), mais je ne sais pas | à quoi cela correspond | | Quelqu'un sait ou trouver les descriptions d'erreurs selon le numero? | | Merci pour toute aide. | | | ' FUNCTION NAME: SendMail
PatLabor
Bonjours Arnaud,
j'ai trouvé le code (ainsi que ceux des GetWords, ParseWords, CountWords) sur la base exemple du site que tu mentionne (A2KSendMailMAPI.zip), sans aucune modification, et le code complet
j'utilise Outlook Express, Access 2000, et Windows 98 et Me
le programme fonctionnne (à priori sans probleme) à la première execution (valeur sendMail retournée = 0) mais le passage suivant donne SendMail = 2
Patrice
<Anor> a écrit dans le message de news:
Bonjour
Quel est ton client mail par défaut, version si Outlook, version de windows et version d'Access
? Sur quel site l'as tu trouvée ? (on dirait un clone de la fonction originelle)
As-tu essayé l'une des bases exemples disponibles sur http://users.skynet.be/accesshome/ah_outlook_sendmailmapi.htm ? As tu bien installé les fonctions auxiliaires Getwords et Parewords ?
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le message de news:
| Amis du Forum, bonjours | | J'envoi des mail avec Access via la méthode MAPI (code ci dessous, copié sur
| un des site des MVP qui nous aident, qu'ils en soient remerciés, mais je ne
| sais plus à qui) | | la fonction SendMail retourne un numero d'erreur (le 2), mais je ne sais pas
| à quoi cela correspond | | Quelqu'un sait ou trouver les descriptions d'erreurs selon le numero? | | Merci pour toute aide. | | | ' FUNCTION NAME: SendMail
Bonjours Arnaud,
j'ai trouvé le code (ainsi que ceux des GetWords, ParseWords, CountWords)
sur la base exemple du site que tu mentionne
(A2KSendMailMAPI.zip), sans aucune modification, et le code complet
j'utilise Outlook Express, Access 2000, et Windows 98 et Me
le programme fonctionnne (à priori sans probleme) à la première execution
(valeur sendMail retournée = 0)
mais le passage suivant donne SendMail = 2
Patrice
<Anor> a écrit dans le message de news:
OyAaWiIhFHA.1048@TK2MSFTNGP14.phx.gbl...
Bonjour
Quel est ton client mail par défaut, version si Outlook, version de
windows et version d'Access
?
Sur quel site l'as tu trouvée ? (on dirait un clone de la fonction
originelle)
As-tu essayé l'une des bases exemples disponibles sur
http://users.skynet.be/accesshome/ah_outlook_sendmailmapi.htm ?
As tu bien installé les fonctions auxiliaires Getwords et Parewords ?
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le
message de news:
edmvuoGhFHA.572@TK2MSFTNGP15.phx.gbl...
| Amis du Forum, bonjours
|
| J'envoi des mail avec Access via la méthode MAPI (code ci dessous, copié
sur
| un des site des MVP qui nous aident, qu'ils en soient remerciés, mais je
ne
| sais plus à qui)
|
| la fonction SendMail retourne un numero d'erreur (le 2), mais je ne sais
pas
| à quoi cela correspond
|
| Quelqu'un sait ou trouver les descriptions d'erreurs selon le numero?
|
| Merci pour toute aide.
|
|
| ' FUNCTION NAME: SendMail
j'ai trouvé le code (ainsi que ceux des GetWords, ParseWords, CountWords) sur la base exemple du site que tu mentionne (A2KSendMailMAPI.zip), sans aucune modification, et le code complet
j'utilise Outlook Express, Access 2000, et Windows 98 et Me
le programme fonctionnne (à priori sans probleme) à la première execution (valeur sendMail retournée = 0) mais le passage suivant donne SendMail = 2
Patrice
<Anor> a écrit dans le message de news:
Bonjour
Quel est ton client mail par défaut, version si Outlook, version de windows et version d'Access
? Sur quel site l'as tu trouvée ? (on dirait un clone de la fonction originelle)
As-tu essayé l'une des bases exemples disponibles sur http://users.skynet.be/accesshome/ah_outlook_sendmailmapi.htm ? As tu bien installé les fonctions auxiliaires Getwords et Parewords ?
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le message de news:
| Amis du Forum, bonjours | | J'envoi des mail avec Access via la méthode MAPI (code ci dessous, copié sur
| un des site des MVP qui nous aident, qu'ils en soient remerciés, mais je ne
| sais plus à qui) | | la fonction SendMail retourne un numero d'erreur (le 2), mais je ne sais pas
| à quoi cela correspond | | Quelqu'un sait ou trouver les descriptions d'erreurs selon le numero? | | Merci pour toute aide. | | | ' FUNCTION NAME: SendMail
Salut Ah je comprends mieux d'où venaient les lignes de commentaires ;-)
Je viens de retester sur WinXP la version 2K (Access2003) et envoyé 5 mails successifs avec OE remis par défaut et ça passe nickel (je ne me souvenais pas que ça fonctionnait si bien d'ailleurs ;-))
Puis passé Outlook 2003 par défaut et refait le test et ça marche tout aussi bien (mais avec le message de sécurité en plus puisque c'est MAPI)
Je ne peux donc que te suggérer d'ouvrir IE, dans le menu outils > options, changer de messagerie par défaut (si tu peux) puis remettre OE, y'a pas de raison ;-)
Si tu n'as "que" Outlook Express installé sur le PC, tu peux alléger la fonction pour éviter d'aller chercher des infos dans la base de registre pour ramener l'e-mail par défaut et le client mail par défaut.
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le message de news:
| Bonjours Arnaud, | | j'ai trouvé le code (ainsi que ceux des GetWords, ParseWords, CountWords) | sur la base exemple du site que tu mentionne | (A2KSendMailMAPI.zip), sans aucune modification, et le code complet | | j'utilise Outlook Express, Access 2000, et Windows 98 et Me | | le programme fonctionnne (à priori sans probleme) à la première execution | (valeur sendMail retournée = 0) | mais le passage suivant donne SendMail = 2 | | Patrice | | | | <Anor> a écrit dans le message de news: | | > Bonjour | > | > Quel est ton client mail par défaut, version si Outlook, version de | windows et version d'Access | > ? | > Sur quel site l'as tu trouvée ? (on dirait un clone de la fonction | originelle) | > As-tu essayé l'une des bases exemples disponibles sur | > http://users.skynet.be/accesshome/ah_outlook_sendmailmapi.htm ? | > As tu bien installé les fonctions auxiliaires Getwords et Parewords ? | > | > ça en fait des questions :o) | > | > -- | > Arnaud | > ----------------------------------- | > http://users.skynet.be/mpfa/ | > ----------------------------------- | > | > | > "PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le | message de news: | > | > | Amis du Forum, bonjours | > | | > | J'envoi des mail avec Access via la méthode MAPI (code ci dessous, copié | sur | > | un des site des MVP qui nous aident, qu'ils en soient remerciés, mais je | ne | > | sais plus à qui) | > | | > | la fonction SendMail retourne un numero d'erreur (le 2), mais je ne sais | pas | > | à quoi cela correspond | > | | > | Quelqu'un sait ou trouver les descriptions d'erreurs selon le numero? | > | | > | Merci pour toute aide. | > | | > | | > | ' FUNCTION NAME: SendMail | > | > | |
Salut
Ah je comprends mieux d'où venaient les lignes de commentaires ;-)
Je viens de retester sur WinXP la version 2K (Access2003) et envoyé 5 mails successifs avec OE
remis par défaut et ça passe nickel
(je ne me souvenais pas que ça fonctionnait si bien d'ailleurs ;-))
Puis passé Outlook 2003 par défaut et refait le test et ça marche tout aussi bien (mais avec le
message de sécurité en plus puisque c'est MAPI)
Je ne peux donc que te suggérer d'ouvrir IE, dans le menu outils > options, changer de
messagerie par défaut (si tu peux) puis remettre OE, y'a pas de raison ;-)
Si tu n'as "que" Outlook Express installé sur le PC, tu peux alléger la fonction pour éviter
d'aller chercher des infos dans la base de registre pour ramener l'e-mail par défaut et le
client mail par défaut.
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le message de news:
uJzsdqIhFHA.2644@TK2MSFTNGP09.phx.gbl...
| Bonjours Arnaud,
|
| j'ai trouvé le code (ainsi que ceux des GetWords, ParseWords, CountWords)
| sur la base exemple du site que tu mentionne
| (A2KSendMailMAPI.zip), sans aucune modification, et le code complet
|
| j'utilise Outlook Express, Access 2000, et Windows 98 et Me
|
| le programme fonctionnne (à priori sans probleme) à la première execution
| (valeur sendMail retournée = 0)
| mais le passage suivant donne SendMail = 2
|
| Patrice
|
|
|
| <Anor> a écrit dans le message de news:
| OyAaWiIhFHA.1048@TK2MSFTNGP14.phx.gbl...
| > Bonjour
| >
| > Quel est ton client mail par défaut, version si Outlook, version de
| windows et version d'Access
| > ?
| > Sur quel site l'as tu trouvée ? (on dirait un clone de la fonction
| originelle)
| > As-tu essayé l'une des bases exemples disponibles sur
| > http://users.skynet.be/accesshome/ah_outlook_sendmailmapi.htm ?
| > As tu bien installé les fonctions auxiliaires Getwords et Parewords ?
| >
| > ça en fait des questions :o)
| >
| > --
| > Arnaud
| > -----------------------------------
| > http://users.skynet.be/mpfa/
| > -----------------------------------
| >
| >
| > "PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le
| message de news:
| > edmvuoGhFHA.572@TK2MSFTNGP15.phx.gbl...
| > | Amis du Forum, bonjours
| > |
| > | J'envoi des mail avec Access via la méthode MAPI (code ci dessous, copié
| sur
| > | un des site des MVP qui nous aident, qu'ils en soient remerciés, mais je
| ne
| > | sais plus à qui)
| > |
| > | la fonction SendMail retourne un numero d'erreur (le 2), mais je ne sais
| pas
| > | à quoi cela correspond
| > |
| > | Quelqu'un sait ou trouver les descriptions d'erreurs selon le numero?
| > |
| > | Merci pour toute aide.
| > |
| > |
| > | ' FUNCTION NAME: SendMail
| >
| >
|
|
Salut Ah je comprends mieux d'où venaient les lignes de commentaires ;-)
Je viens de retester sur WinXP la version 2K (Access2003) et envoyé 5 mails successifs avec OE remis par défaut et ça passe nickel (je ne me souvenais pas que ça fonctionnait si bien d'ailleurs ;-))
Puis passé Outlook 2003 par défaut et refait le test et ça marche tout aussi bien (mais avec le message de sécurité en plus puisque c'est MAPI)
Je ne peux donc que te suggérer d'ouvrir IE, dans le menu outils > options, changer de messagerie par défaut (si tu peux) puis remettre OE, y'a pas de raison ;-)
Si tu n'as "que" Outlook Express installé sur le PC, tu peux alléger la fonction pour éviter d'aller chercher des infos dans la base de registre pour ramener l'e-mail par défaut et le client mail par défaut.
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le message de news:
| Bonjours Arnaud, | | j'ai trouvé le code (ainsi que ceux des GetWords, ParseWords, CountWords) | sur la base exemple du site que tu mentionne | (A2KSendMailMAPI.zip), sans aucune modification, et le code complet | | j'utilise Outlook Express, Access 2000, et Windows 98 et Me | | le programme fonctionnne (à priori sans probleme) à la première execution | (valeur sendMail retournée = 0) | mais le passage suivant donne SendMail = 2 | | Patrice | | | | <Anor> a écrit dans le message de news: | | > Bonjour | > | > Quel est ton client mail par défaut, version si Outlook, version de | windows et version d'Access | > ? | > Sur quel site l'as tu trouvée ? (on dirait un clone de la fonction | originelle) | > As-tu essayé l'une des bases exemples disponibles sur | > http://users.skynet.be/accesshome/ah_outlook_sendmailmapi.htm ? | > As tu bien installé les fonctions auxiliaires Getwords et Parewords ? | > | > ça en fait des questions :o) | > | > -- | > Arnaud | > ----------------------------------- | > http://users.skynet.be/mpfa/ | > ----------------------------------- | > | > | > "PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le | message de news: | > | > | Amis du Forum, bonjours | > | | > | J'envoi des mail avec Access via la méthode MAPI (code ci dessous, copié | sur | > | un des site des MVP qui nous aident, qu'ils en soient remerciés, mais je | ne | > | sais plus à qui) | > | | > | la fonction SendMail retourne un numero d'erreur (le 2), mais je ne sais | pas | > | à quoi cela correspond | > | | > | Quelqu'un sait ou trouver les descriptions d'erreurs selon le numero? | > | | > | Merci pour toute aide. | > | | > | | > | ' FUNCTION NAME: SendMail | > | > | |
PatLabor
Petit complement d'info
SendMail fonctionne bien
l'envoi avec un PDF existant OK
Mais dans une procedure, je créé à partir d'un état un doc PDF qui sera joint au mail que j'envoi
l'état est imprimé sur PDFCreator selon les procédure copiées en bas et tirées du fil que tu m'a donné Arnaud
Bonjour
Peut-être existe-t-il de nouveux logiciels gratuits, mais regarde attentivement ce fil :
j'utilise une boucle pour vérifier existence du doc en cours de création
Do Until fFileExist(PDFFilePath & "" & PDFFileName) DoEvents Loop
Je pense que l'erreur de SendMail est liée à cette création PDF, mais en quoi ?? Surtout que j'utilise tjs le même mail pour tester le programme !
Public Sub PDFCreatorSetUp(valeur As Integer, strPDFPath As String, strPDFName As String)
' ######################################################### ' Procédure tirée d'Internet, et enregistrée dans HelpPDF ' #########################################################
Dim Wsh, WshSystem, fso, fileTxt, Rep Dim MesDocuments, Wchemin As String Dim Wlignes() Dim ix1 As Integer Const ForReading = 1, ForWriting = 2, ForAppending = 8
If Not IsNumeric(valeur) Or (valeur <> 0 And valeur <> 1) Then Exit Sub
Set fso = CreateObject("Scripting.FileSystemObject")
If Not (fso.FileExists(Wchemin)) Then Set fso = Nothing MsgBox "Le chemin de l'application PDFCreator n'est pas le bon" & vbCrLf & vbCrLf & "Chemin recherché : " & Wchemin Exit Sub End If
' -------------------------modifier les lignes concernées--------------------------
ix1 = 0 ReDim Wlignes(1000)
Set fileTxt = fso.OpenTextFile(Wchemin, ForReading, False) Do While fileTxt.AtEndOfStream <> True Wlignes(ix1) = fileTxt.ReadLine If Left(Wlignes(ix1), 12) = "UseAutosave=" Then Wlignes(ix1) = "UseAutosave=" & valeur End If If Left(Wlignes(ix1), 21) = "UseAutosaveDirectory=" Then Wlignes(ix1) = "UseAutosaveDirectory=" & valeur End If If Left(Wlignes(ix1), 18) = "AutosaveDirectory=" Then Wlignes(ix1) = "AutosaveDirectory=" & strPDFPath End If If Left(Wlignes(ix1), 17) = "AutosaveFilename=" Then Wlignes(ix1) = "AutosaveFilename=" & strPDFName End If ix1 = ix1 + 1 Loop fileTxt.Close
ReDim Preserve Wlignes(ix1 - 1) Set fileTxt = Nothing
Set fileTxt = fso.GetFile(Wchemin) fso.DeleteFile (fileTxt) Set fileTxt = Nothing
Set fileTxt = fso.OpenTextFile(Wchemin, ForWriting, True) For ix1 = 0 To UBound(Wlignes, 1) fileTxt.WriteLine (Wlignes(ix1)) Next fileTxt.Close
Set fileTxt = Nothing Set fso = Nothing
End Sub
Public Function subCreatePDFFromReport(ByVal ReportName As String, ByVal PDFFilePath As String, PDFFileName As String, strWhere As String) As Boolean
Dim rpt1 As Report, rpt2 As Report Dim rptPrinter As String
If Err.Number > 0 Then If Err.Number <> 2501 Then 'autre que Action open Report annulée MsgBox "une piece jointe rencontre l'erreur suivante et va donc être supprimée : " & vbCrLf & Err.Description, , "Erreur n°" & Err.Number & " lors de la creation d'un PDF avec l'état " & ReportName End If ' Effacer cette ligne des PJ MsgBox "ANNULATION PJ" subCreatePDFFromReport = False Exit Function End If On Error GoTo 0
Do Until fFileExist(PDFFilePath & "" & PDFFileName) DoEvents Loop
subCreatePDFFromReport = True
End Function
Petit complement d'info
SendMail fonctionne bien
l'envoi avec un PDF existant OK
Mais dans une procedure, je créé à partir d'un état un doc PDF qui sera
joint au mail que j'envoi
l'état est imprimé sur PDFCreator selon les procédure copiées en bas et
tirées du fil que tu m'a donné Arnaud
Bonjour
Peut-être existe-t-il de nouveux logiciels gratuits, mais regarde
attentivement ce fil :
j'utilise une boucle pour vérifier existence du doc en cours de création
Do Until fFileExist(PDFFilePath & "" & PDFFileName)
DoEvents
Loop
Je pense que l'erreur de SendMail est liée à cette création PDF, mais en
quoi ??
Surtout que j'utilise tjs le même mail pour tester le programme !
Public Sub PDFCreatorSetUp(valeur As Integer, strPDFPath As String,
strPDFName As String)
' #########################################################
' Procédure tirée d'Internet, et enregistrée dans HelpPDF
' #########################################################
Dim Wsh, WshSystem, fso, fileTxt, Rep
Dim MesDocuments, Wchemin As String
Dim Wlignes()
Dim ix1 As Integer
Const ForReading = 1, ForWriting = 2, ForAppending = 8
If Not IsNumeric(valeur) Or (valeur <> 0 And valeur <> 1) Then Exit Sub
Set fso = CreateObject("Scripting.FileSystemObject")
If Not (fso.FileExists(Wchemin)) Then
Set fso = Nothing
MsgBox "Le chemin de l'application PDFCreator n'est pas le bon" &
vbCrLf & vbCrLf & "Chemin recherché : " & Wchemin
Exit Sub
End If
' -------------------------modifier les lignes
concernées--------------------------
ix1 = 0
ReDim Wlignes(1000)
Set fileTxt = fso.OpenTextFile(Wchemin, ForReading, False)
Do While fileTxt.AtEndOfStream <> True
Wlignes(ix1) = fileTxt.ReadLine
If Left(Wlignes(ix1), 12) = "UseAutosave=" Then
Wlignes(ix1) = "UseAutosave=" & valeur
End If
If Left(Wlignes(ix1), 21) = "UseAutosaveDirectory=" Then
Wlignes(ix1) = "UseAutosaveDirectory=" & valeur
End If
If Left(Wlignes(ix1), 18) = "AutosaveDirectory=" Then
Wlignes(ix1) = "AutosaveDirectory=" & strPDFPath
End If
If Left(Wlignes(ix1), 17) = "AutosaveFilename=" Then
Wlignes(ix1) = "AutosaveFilename=" & strPDFName
End If
ix1 = ix1 + 1
Loop
fileTxt.Close
ReDim Preserve Wlignes(ix1 - 1)
Set fileTxt = Nothing
Set fileTxt = fso.GetFile(Wchemin)
fso.DeleteFile (fileTxt)
Set fileTxt = Nothing
Set fileTxt = fso.OpenTextFile(Wchemin, ForWriting, True)
For ix1 = 0 To UBound(Wlignes, 1)
fileTxt.WriteLine (Wlignes(ix1))
Next
fileTxt.Close
Set fileTxt = Nothing
Set fso = Nothing
End Sub
Public Function subCreatePDFFromReport(ByVal ReportName As String, ByVal
PDFFilePath As String, PDFFileName As String, strWhere As String) As Boolean
Dim rpt1 As Report, rpt2 As Report
Dim rptPrinter As String
If Err.Number > 0 Then
If Err.Number <> 2501 Then 'autre que Action open Report annulée
MsgBox "une piece jointe rencontre l'erreur suivante et va donc être
supprimée : " & vbCrLf & Err.Description, , "Erreur n°" & Err.Number & "
lors de la creation d'un PDF avec l'état " & ReportName
End If
' Effacer cette ligne des PJ
MsgBox "ANNULATION PJ"
subCreatePDFFromReport = False
Exit Function
End If
On Error GoTo 0
Do Until fFileExist(PDFFilePath & "" & PDFFileName)
DoEvents
Loop
j'utilise une boucle pour vérifier existence du doc en cours de création
Do Until fFileExist(PDFFilePath & "" & PDFFileName) DoEvents Loop
Je pense que l'erreur de SendMail est liée à cette création PDF, mais en quoi ?? Surtout que j'utilise tjs le même mail pour tester le programme !
Public Sub PDFCreatorSetUp(valeur As Integer, strPDFPath As String, strPDFName As String)
' ######################################################### ' Procédure tirée d'Internet, et enregistrée dans HelpPDF ' #########################################################
Dim Wsh, WshSystem, fso, fileTxt, Rep Dim MesDocuments, Wchemin As String Dim Wlignes() Dim ix1 As Integer Const ForReading = 1, ForWriting = 2, ForAppending = 8
If Not IsNumeric(valeur) Or (valeur <> 0 And valeur <> 1) Then Exit Sub
Set fso = CreateObject("Scripting.FileSystemObject")
If Not (fso.FileExists(Wchemin)) Then Set fso = Nothing MsgBox "Le chemin de l'application PDFCreator n'est pas le bon" & vbCrLf & vbCrLf & "Chemin recherché : " & Wchemin Exit Sub End If
' -------------------------modifier les lignes concernées--------------------------
ix1 = 0 ReDim Wlignes(1000)
Set fileTxt = fso.OpenTextFile(Wchemin, ForReading, False) Do While fileTxt.AtEndOfStream <> True Wlignes(ix1) = fileTxt.ReadLine If Left(Wlignes(ix1), 12) = "UseAutosave=" Then Wlignes(ix1) = "UseAutosave=" & valeur End If If Left(Wlignes(ix1), 21) = "UseAutosaveDirectory=" Then Wlignes(ix1) = "UseAutosaveDirectory=" & valeur End If If Left(Wlignes(ix1), 18) = "AutosaveDirectory=" Then Wlignes(ix1) = "AutosaveDirectory=" & strPDFPath End If If Left(Wlignes(ix1), 17) = "AutosaveFilename=" Then Wlignes(ix1) = "AutosaveFilename=" & strPDFName End If ix1 = ix1 + 1 Loop fileTxt.Close
ReDim Preserve Wlignes(ix1 - 1) Set fileTxt = Nothing
Set fileTxt = fso.GetFile(Wchemin) fso.DeleteFile (fileTxt) Set fileTxt = Nothing
Set fileTxt = fso.OpenTextFile(Wchemin, ForWriting, True) For ix1 = 0 To UBound(Wlignes, 1) fileTxt.WriteLine (Wlignes(ix1)) Next fileTxt.Close
Set fileTxt = Nothing Set fso = Nothing
End Sub
Public Function subCreatePDFFromReport(ByVal ReportName As String, ByVal PDFFilePath As String, PDFFileName As String, strWhere As String) As Boolean
Dim rpt1 As Report, rpt2 As Report Dim rptPrinter As String
If Err.Number > 0 Then If Err.Number <> 2501 Then 'autre que Action open Report annulée MsgBox "une piece jointe rencontre l'erreur suivante et va donc être supprimée : " & vbCrLf & Err.Description, , "Erreur n°" & Err.Number & " lors de la creation d'un PDF avec l'état " & ReportName End If ' Effacer cette ligne des PJ MsgBox "ANNULATION PJ" subCreatePDFFromReport = False Exit Function End If On Error GoTo 0
Do Until fFileExist(PDFFilePath & "" & PDFFileName) DoEvents Loop
subCreatePDFFromReport = True
End Function
re
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le message de news: % | Petit complement d'info | | SendMail fonctionne bien | | l'envoi avec un PDF existant OK | | Mais dans une procedure, je créé à partir d'un état un doc PDF qui sera | joint au mail que j'envoi | | l'état est imprimé sur PDFCreator selon les procédure copiées en bas et | tirées du fil que tu m'a donné Arnaud | | j'utilise une boucle pour vérifier existence du doc en cours de création | | Do Until fFileExist(PDFFilePath & "" & PDFFileName) | DoEvents | Loop | | Je pense que l'erreur de SendMail est liée à cette création PDF, mais en | quoi ?? | Surtout que j'utilise tjs le même mail pour tester le programme ! |
hum...tu génères un nouveau pdf avant chaque envoi ?
Si oui, je suppute que le fichier existe mais n'est pas encore totalement libéré (encore en cours d'écriture lorsque tu le rajoutes au programme).
La première exécution de sendmail étant plus longue que la seconde (création des objets, etc), ça explique peut-être pourquoi ça fonctionne une fois et pas deux.
Une seule solution, débogger pas à pas afin de voir si c'est un problème de délais et si systématique au 2ème envoi
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le message de news:
%23BiUz8IhFHA.320@TK2MSFTNGP09.phx.gbl...
| Petit complement d'info
|
| SendMail fonctionne bien
|
| l'envoi avec un PDF existant OK
|
| Mais dans une procedure, je créé à partir d'un état un doc PDF qui sera
| joint au mail que j'envoi
|
| l'état est imprimé sur PDFCreator selon les procédure copiées en bas et
| tirées du fil que tu m'a donné Arnaud
|
| j'utilise une boucle pour vérifier existence du doc en cours de création
|
| Do Until fFileExist(PDFFilePath & "" & PDFFileName)
| DoEvents
| Loop
|
| Je pense que l'erreur de SendMail est liée à cette création PDF, mais en
| quoi ??
| Surtout que j'utilise tjs le même mail pour tester le programme !
|
hum...tu génères un nouveau pdf avant chaque envoi ?
Si oui, je suppute que le fichier existe mais n'est pas encore totalement libéré (encore en
cours d'écriture lorsque tu le rajoutes au programme).
La première exécution de sendmail étant plus longue que la seconde (création des objets, etc),
ça explique peut-être pourquoi ça fonctionne une fois et pas deux.
Une seule solution, débogger pas à pas afin de voir si c'est un problème de délais et si
systématique au 2ème envoi
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le message de news: % | Petit complement d'info | | SendMail fonctionne bien | | l'envoi avec un PDF existant OK | | Mais dans une procedure, je créé à partir d'un état un doc PDF qui sera | joint au mail que j'envoi | | l'état est imprimé sur PDFCreator selon les procédure copiées en bas et | tirées du fil que tu m'a donné Arnaud | | j'utilise une boucle pour vérifier existence du doc en cours de création | | Do Until fFileExist(PDFFilePath & "" & PDFFileName) | DoEvents | Loop | | Je pense que l'erreur de SendMail est liée à cette création PDF, mais en | quoi ?? | Surtout que j'utilise tjs le même mail pour tester le programme ! |
hum...tu génères un nouveau pdf avant chaque envoi ?
Si oui, je suppute que le fichier existe mais n'est pas encore totalement libéré (encore en cours d'écriture lorsque tu le rajoutes au programme).
La première exécution de sendmail étant plus longue que la seconde (création des objets, etc), ça explique peut-être pourquoi ça fonctionne une fois et pas deux.
Une seule solution, débogger pas à pas afin de voir si c'est un problème de délais et si systématique au 2ème envoi
hum...tu génères un nouveau pdf avant chaque envoi ?
Oui, mais une seule fois même s'il y a plusieurs destinataires (à chaque destinataire est créé un nouveau mail)
Si oui, je suppute que le fichier existe mais n'est pas encore totalement libéré (encore en
cours d'écriture lorsque tu le rajoutes au programme).
La première exécution de sendmail étant plus longue que la seconde (création des objets, etc),
ça explique peut-être pourquoi ça fonctionne une fois et pas deux.
Une seule solution, débogger pas à pas afin de voir si c'est un problème de délais et si
systématique au 2ème envoi
En rajoutant une boucle sur 30000 millisecondes après la boucle de vérification d'existence du fichier, ca marche
il faut au total 4 minutes pour exporter un état en PDF, quand même
Merci Arnaud. et bon week end
Resalut
"PatLabor" | | En rajoutant une boucle sur 30000 millisecondes après la boucle de | vérification d'existence du fichier, ca marche | | il faut au total 4 minutes pour exporter un état en PDF, quand même | | Merci Arnaud. | et bon week end |
Juste une idée pour finir : tu peux peut-être aussi boucler toutes les x secondes sur la taille du fichier lorsqu'il existe, et si la taille n'a pas changé entre 2 itérations, tu considères qu'il est libéré.
"PatLabor"
|
| En rajoutant une boucle sur 30000 millisecondes après la boucle de
| vérification d'existence du fichier, ca marche
|
| il faut au total 4 minutes pour exporter un état en PDF, quand même
|
| Merci Arnaud.
| et bon week end
|
Juste une idée pour finir : tu peux peut-être aussi boucler toutes les x secondes sur la taille
du fichier lorsqu'il existe, et si la taille n'a pas changé entre 2 itérations, tu considères
qu'il est libéré.
"PatLabor" | | En rajoutant une boucle sur 30000 millisecondes après la boucle de | vérification d'existence du fichier, ca marche | | il faut au total 4 minutes pour exporter un état en PDF, quand même | | Merci Arnaud. | et bon week end |
Juste une idée pour finir : tu peux peut-être aussi boucler toutes les x secondes sur la taille du fichier lorsqu'il existe, et si la taille n'a pas changé entre 2 itérations, tu considères qu'il est libéré.
Juste une idée pour finir : tu peux peut-être aussi boucler toutes les x secondes sur la taille
du fichier lorsqu'il existe, et si la taille n'a pas changé entre 2 itérations, tu considères
qu'il est libéré.
ça fait moins aléatoire comme tempo :-)
Et cela a l'avantage de s'adapter à toute taille de doc créé
Ca marche impec
Merci
Salut
Alors là je ne m'attendais pas à ce que ça fonctionne : c'était une simple intuition car jamais mis en oeuvre :o))
à+ Arnaud
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le message de news: % | Bien l'bonjour Arnaud (et tout le monde) | | > Juste une idée pour finir : tu peux peut-être aussi boucler toutes les x | secondes sur la taille | > du fichier lorsqu'il existe, et si la taille n'a pas changé entre 2 | itérations, tu considères | > qu'il est libéré. | > | > ça fait moins aléatoire comme tempo :-) | | Et cela a l'avantage de s'adapter à toute taille de doc créé | | Ca marche impec | | Merci | |
Salut
Alors là je ne m'attendais pas à ce que ça fonctionne : c'était une simple intuition car jamais
mis en oeuvre :o))
à+
Arnaud
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le message de news:
%23EsYkzfhFHA.2072@TK2MSFTNGP14.phx.gbl...
| Bien l'bonjour Arnaud (et tout le monde)
|
| > Juste une idée pour finir : tu peux peut-être aussi boucler toutes les x
| secondes sur la taille
| > du fichier lorsqu'il existe, et si la taille n'a pas changé entre 2
| itérations, tu considères
| > qu'il est libéré.
| >
| > ça fait moins aléatoire comme tempo :-)
|
| Et cela a l'avantage de s'adapter à toute taille de doc créé
|
| Ca marche impec
|
| Merci
|
|
Alors là je ne m'attendais pas à ce que ça fonctionne : c'était une simple intuition car jamais mis en oeuvre :o))
à+ Arnaud
"PatLabor" <patrice.poitevin@(à effacer)wanadoo.fr> a écrit dans le message de news: % | Bien l'bonjour Arnaud (et tout le monde) | | > Juste une idée pour finir : tu peux peut-être aussi boucler toutes les x | secondes sur la taille | > du fichier lorsqu'il existe, et si la taille n'a pas changé entre 2 | itérations, tu considères | > qu'il est libéré. | > | > ça fait moins aléatoire comme tempo :-) | | Et cela a l'avantage de s'adapter à toute taille de doc créé | | Ca marche impec | | Merci | |