3
Je voudrais répondre à un formulaire Web extrayant l'adresse e-mail du formulaire.Extrait Adresse e-mail d'une table en .HTMLbody
La forme Web est dans une table, ainsi la fonction ParseTextLinePair() renvoie des espaces vides en tant qu'adresse de messagerie dans la colonne à côté de l'étiquette.
Comment puis-je extraire l'adresse électronique d'un formulaire Web?
Sub ReplywithTemplatev2()
Dim Item As Outlook.MailItem
Dim oRespond As Outlook.MailItem
'Get Email
Dim intLocAddress As Integer
Dim intLocCRLF As Integer
Dim strAddress As String
Set Item = GetCurrentItem()
If Item.Class = olMail Then
' find the requestor address
strAddress = ParseTextLinePair(Item.Body, "Email-Adresse des Ansprechpartners *")
' This sends a response back using a template
Set oRespond = Application.CreateItemFromTemplate("C:\Users\Reply.oft")
With oRespond
.Recipients.Add Item.SenderEmailAddress
.Subject = "Your Subject Goes Here"
.HTMLBody = oRespond.HTMLBody & vbCrLf & _
"---- original message below ---" & vbCrLf & _
Item.HTMLBody & vbCrLf
' includes the original message as an attachment
' .Attachments.Add Item
oRespond.To = strAddress
' use this for testing, change to .send once you have it working as desired
.Display
End With
End If
Set oRespond = Nothing
End Sub
Function GetCurrentItem() As Object
Dim objApp As Outlook.Application
Set objApp = Application
On Error Resume Next
Select Case TypeName(objApp.ActiveWindow)
Case "Explorer"
Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
Case "Inspector"
Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
End Select
Set objApp = Nothing
End Function
Function ParseTextLinePair(strSource As String, strLabel As String)
Dim intLocLabel As Integer
Dim intLocCRLF As Integer
Dim intLenLabel As Integer
Dim strText As String
' locate the label in the source text
intLocLabel = InStr(strSource, strLabel)
intLenLabel = Len(strLabel)
If intLocLabel > 0 Then
intLocCRLF = InStr(intLocLabel, strSource, vbCrLf)
If intLocCRLF > 0 Then
intLocLabel = intLocLabel + intLenLabel
strText = Mid(strSource, _
intLocLabel, _
intLocCRLF - intLocLabel)
Else
intLocLabel = Mid(strSource, intLocLabel + intLenLabel)
End If
End If
ParseTextLinePair = Trim(strText)
End Function
Une image de la table pour clarifier.
Vous pouvez avoir plus de chance avec 'Item.HTMLBody' en renvoyant une chaîne HTML structuré y Vous pourriez utiliser pour analyser les éléments '
Capture d'écran ajoutée. Table avec 2 colonnes et 9 rangées. – user3772665
Répondre
Avez-vous regardé pour des expressions régulières dans VBA, je ne l'ai pas sur travaillé dans tout, mais voici un exemple.
Ou
Pattern = "(\S*@\w+\.\w+)"
Ou"(\w+(?:\W+\w+)*@\w+\.\w+)"
Regular-expressions.info/tutorial
\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,}\b
Modèle simple qui décrit une adresse e-mail.Une série de lettres, des chiffres, des points, souligne, signes de pourcentage et les traits d'union, suivi d'un arobase, suivie d'une autre série de lettres, des chiffres et des traits d'union, finalement suivi par un seul point et deux ou plusieurs lettres
[A-Z0-9._%+-]+
alignement d'un seul caractère présent dans la liste ci-dessousA-Z
un seul caractère dans la plage comprise entre a et Z (Sensible à la casse)0-9
un seul caractère dans la plage comprise entre 0 et 9._%+-
un seul caractère dans la liste@
Correspond au caractère @ littéralementquantificateurs
Udemy.com/vba-regex/
Wikibooks.org/wiki/Visual_Basic/Regular_Expressions
https://regex101.com/r/oP2yR0/1
Source
2016-09-20 07:36:08 0m3r
génial merci qui fonctionne pour l'adresse e-mail. la raison pour laquelle je voulais utiliser une solution basée sur une table ou la solution ci-dessus est que je voudrais aussi récupérer l'entrée de la première ligne dans la deuxième colonne. – user3772665
Apparaît la question sur l'extraction d'une adresse e-mail a été répondue de manière satisfaisante. Envisagez de l'accepter et de créer une nouvelle question. http://stackoverflow.com/help/accepted-answer – niton
Que se passe-t-il quand il y a plus d'une adresse e-mail? – pablo808
Questions connexes