mxcz
Messages postés8Date d'inscriptionmardi 24 décembre 2002StatutMembreDernière intervention20 septembre 2004
-
20 sept. 2004 à 17:56
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutModérateurDernière intervention23 décembre 2008
-
20 sept. 2004 à 20:59
Bonjour à tous je me retouve bloquer avec un code de je
souhaite utiliser.
Compile error Invalid use of Me Keyword !
voici le code ou il bloque.
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory _
As String, ByVal nShowCmd As Long) As Long
Private Const SW_SHOWNORMAL = 1
Public Sub SendMail(Optional Address As String, _
Optional subject As String, Optional body As String, _
Optional cc As String, Optional bcc As String)
Dim strCommand As String
'Construction du message
'Sujet du message
If Len(subject) Then strCommand = "&subject=" & subject
'Corps du message
If Len(body) Then strCommand = strCommand & "&body=" & body
'Copie du message (adresse email attendue)
If Len(cc) Then strCommand = strCommand & "&cc=" & cc
'Copie cachée du message
If Len(bcc) Then strCommand = strCommand & "&bcc=" & bcc
'Ajout de l'adresse email à la ligne de commande
strCommand = "mailto:" & Address & strCommand
'Execution de la commande via l'API
Call ShellExecute(Me.hwnd, "open", strCommand, _
vbNullString, vbNullString, SW_SHOWNORMAL)
End Sub
J'ai trouver ce code sur Vbfrance, il permet d'ouvrir la messagerie
par default pour envoyer un mail.
Merci beaucoup pour votre aide.
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 20 sept. 2004 à 18:58
Je suppose que cet extrait de code vient d'un moduel standard !
Or a la dernière ligne de code, dans ton Shellexecute(), tu utilise le mot-clé Me, qui ne peut être utilsier que dans un module-objet : Module d'une form ou module de classe ou d'un OCX.
En effet, Me représente l'instance de l'objet en question au moment de l'execution.
donc pour solutionner ton pb, place ce code dans le module d'une form. Comme tu veux le Handle d'un objet pour l'envoyer à ShellExecute, il te faut un objet form.
Si tu veux vraiment que ce code soit dans un module, remplace le Me.Hwnd par un Form1.Hwnd. Ou pour que ton code soit plus propre et portable, modifie la dcl de SendMail de cette façon :
Public Sub SendMail(Hwnd as Long, Optional Address As String, _
Optional subject As String, Optional body As String, _
Optional cc As String, Optional bcc As String)
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutModérateurDernière intervention23 décembre 200823 20 sept. 2004 à 20:59
Peux-tu dans ce cas valider la réponse de Christophe en cliquant sur le bouton 'Accepter la réponse'.
Cela permet aux autres de savoir qu'il n'est plus nécessaire de se creuser la tête, la solution est trouvée ...