J'ai besoin de lire le tableau de données comme dans picure en utilisant vba. J'ai utilisé Msg.Body pour lire le corps du texte mais en fait j'ai besoin de trouver la première ligne comme en-tête et reposer comme champ de données et mettre à jour le tableau SGBD en conséquence.Alors est-il possible de lire la table comme je le ferais? Comment lire le tableau collé dans le corps du message Outlook en utilisant vba?
Répondre
Cette procédure exemple devrait aider. J'ai recréé votre tableau dans Excel, je l'ai collé dans un email Outlook et je l'ai envoyé à moi-même. Ensuite, j'ai utilisé cette procédure pour lire les valeurs de "cellule".
Sub GetLines()
Dim msg As Outlook.mailItem
Dim rows As Variant
Dim numberofColumns As Long
Dim numberofRows As Long
Dim headerValues As Variant
Dim headerRow() As String
Dim data() As String
Dim i As Long, j As Long
' get currently selected email
Set msg = ActiveExplorer.Selection.item(1)
' tokenize each line of the email
rows = Split(msg.Body, vbCrLf)
' calculate array size
numberofColumns = Len(rows(0)) - Len(Replace(rows(0), Chr(9), ""))
numberofRows = UBound(rows) + 1
' put header row into array
ReDim headerRow(1 To numberofColumns)
headerValues = Split(rows(0), Chr(9))
For i = 1 To numberofColumns
headerRow(i) = Trim$(headerValues(i - 1))
Next i
' calculate data array size
numberofRows = numberofRows - 1
' put data into array
ReDim data(1 To numberofRows, 1 To numberofColumns)
For i = 1 To numberofRows
For j = 1 To numberofColumns
data(i, j) = Trim$(Split(rows(i), Chr(9))(j - 1))
Next j
Next i
End Sub
D'abord, nous marquons chaque ligne de l'email dans un tableau. Nous calculons la taille du tableau, puis créons un tableau pour ne contenir que la première ligne de la table (l '"en-tête").
Ensuite, nous soustrayons un du nombre de lignes parce que nous allons passer la ligne d'en-tête. Nous parcourons ensuite chaque ligne, la divisons et parcourons ses valeurs en boucle, en les affectant à notre tableau 2D au fur et à mesure. En fin de compte, la variable "headerRow" peut être itérée pour récupérer les valeurs de champs que vous souhaitez utiliser pour votre SGBD. La variable "data" contient uniquement les valeurs correspondant à chaque champ. Ainsi, headerRow (1) et data (n, 1) doivent correspondre aux valeurs de la première colonne de votre tableau.
+1 bien fait. – brettdj
- 1. Outlook attachments.Add() n'apparaît pas dans le corps du message
- 2. Lire le corps du message mis à jour dans Outlook 2003
- 3. Lire le message "actif" dans l'action du menu contextuel Outlook?
- 4. Java Mail API lire le problème du corps du message
- 5. Lire le contenu du corps du message de savon dans le filtre de message WCF personnalisé
- 6. Ajouter automatiquement CC Dans le nouveau message dans Outlook en utilisant VBA n'apparaissez-vous pas?
- 7. Comment lire uniquement le nouveau contenu dans le corps VSTO Outlook MailItem?
- 8. réaliser le formatage dans le corps du message (en html)
- 9. Lire le corps de message WCF deux fois - "Impossible de lire le message"
- 10. Javamail, obtenir le corps du message
- 11. corps du message dans REST
- 12. Récupérer le corps actuel du courrier électronique dans Outlook
- 13. lire le contenu du presse-papiers dans le tableau en VBA
- 14. Outlook Macro Nouveau message perd le formatage
- 15. Comment extraire le corps du message HTTP dans BaseHTTPRequestHandler.do_POST()?
- 16. Outlook 2010 comment obtenir l'adresse du champ À et collez-le dans le corps de l'e-mail via VBA
- 17. comment envoyer un message, en utilisant Outlook - texte de droite à gauche dans le message?
- 18. comment remplacer du texte dans le corps en utilisant javascript
- 19. Message d'erreur du projet R - Impossible de lire le tableau
- 20. lire le texte du corps html
- 21. Comment lire le contenu du corps à partir de données multi-pièces en utilisant java?
- 22. VBA-Problème avec l'attachement des cellules dans le corps de l'email (Outlook)
- 23. Utilisation du carnet d'adresses dans Outlook VBA
- 24. Envoyer le message du corps avec le code CSS en utilisant PHPMailer ne fonctionne pas
- 25. intégrer l'image dans le corps du courrier en utilisant l'accès vba
- 26. Ajout d'un en-tête de sujet dans Outlook (VBA)
- 27. supprimer le message sans lire en utilisant le client Pop3
- 28. Comment puis-je obtenir le corps d'un message en utilisant JavaMail?
- 29. Comment lire le message entrant en utilisant le service en arrière-plan dans Android?
- 30. Comment puis-je empêcher l'affichage du contenu de la pièce jointe dans le corps du message?
Quel est le format de corps de courrier? HTML, texte riche? Quelle est la source de la table - a-t-elle été collée à partir de Word/Excel? –
Pouvez-vous diviser le corps de l'e-mail en utilisant Split (Msg.Body, vbCrLf)? Le premier jeton de tableau sera l'en-tête. Tout de LBound (Split (Msg.Body, vbCrLf)) + 1 à UBound() sera les données. – JimmyPena
@TimWilliams oui c'était collé d'excel !!! – kinkajou