Existe-t-il un moyen de lister
les sujets (des mails) situés dans Eléments Envoyés
mais uniquement pour Outlook Express? (PC sous XL2000 sans Outlook installé)
J'ai essayé cela:
Code:
Sub test()
Dim dossier As MAPIFolder ' erreur ici
Dim i As Long
Set dossier = Application.Session.GetDefaultFolder(olFolderSentMail)
For i = dossier.Items.Count To 1 Step -1
Debug.Print dossier.Items(i).Subject
Next i
End Sub
Quand je coche dans Références, MSOE.dll (Microsoft Outlool Express 5.0 Type Library)
Re : VBA: lister Sujets Eléments Envoyés (Outlook Express seulement)
Re
Est-ce impossible?
Meme en utilisant WSH?
En attendant j'ai pensé à cette méthode
1) copier puis renommer mon Eléments envoyés.dbx en *.txt
2)l'ouvrir dans Excel avec l'assistant d'importation texte
3)faire un filtre automatique personnalisé sur la première colonne
critère: commence par Subj
le problème c'est qu'il y des cellules vides dans la colonne 1
Comment pourrais-je?
Si quelqu'un à d'autres idées, merci.
edition:
après un petit café, quelques recherches, j'ai reussi à obtenir un résultat
Code:
Sub test2()
'inspiré par : http://www.rondebruin.nl/delete.htm
'et avec l'aide du fidèle enregistreur de macro
Dim PL As Long
Dim DLg As Long
Dim LGn As Long
Dim CalcMode As Long
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
PLg = 1
DLg = Range("A65536").End(xlUp).Row
With ActiveSheet
For LGn = DLg To PLg Step -1
If IsEmpty(.Cells(LGn, "A").Value) Then Cells(LGn, "A").Value = "STAPLE"
Next
End With
With [A1]
.AutoFilter 1, "=Subj*", xlAnd
.CurrentRegion.Copy
End With
Workbooks.Add
[A1].PasteSpecial Paste:=xlValues
With Application
.ScreenUpdating = True
.Calculation = CalcMode
.CutCopyMode = False
End With
End Sub
Si vous pouviez m'aider à abréger le code VBA ci dessus, je vous serai reconnaissant
Si vous pouviez m'indiquer une autre facon de procéder, ou me conseiller
un utilitaire qui permette d'exporter la liste des objets des mails envoyés avec OE
je vous serai doublement reconnaissant.
Re : VBA: lister Sujets Eléments Envoyés (Outlook Express seulement)
Bonjour le forum
Personne pour m'aiguiller sur une piste
J'ai trouvé ceci sur le net:
SOURCE:
Code:
Option Explicit
'
' Listing 11.6. A procedure that reads Inbox data into a worksheet.
'
Sub ReadInboxData()'Sub LireMailsObjets()
Dim ol As Outlook.Application
Dim ns As NameSpace
Dim folder As MAPIFolder
Dim ws As Worksheet
Dim i As Integer
'
' Establish a connection and log on
'
Set ol = CreateObject("Outlook.Application")
Set ns = ol.GetNamespace("MAPI")
ns.Logon
'
' Get the default Inbox folder and set Receive Mail worksheet
'
Set folder = ns.GetDefaultFolder(olFolderInbox)
'+++++++++++' modifs
Set folder =ns.GetDefaultFolder(olFolderSentMail)
'+++++++++++
'+++++++++++ 'modifs
Set ws = Worksheets("Emails envoyes"")
'++++++++++
'Set ws = Worksheets("Receive Mail")
'
' Run through each item in the Inbox
'
For i = 1 To folder.Items.Count
With folder.Items(i)
'
' Record the sender, subject, size,
' received time, and some of the body
'
ws.[A1].Offset(i, 0) = .SenderName
ws.[A1].Offset(i, 1) = .SenderEmailAddress
ws.[A1].Offset(i, 2) = .Subject
ws.[A1].Offset(i, 3) = .Size
ws.[A1].Offset(i, 4) = .ReceivedTime
ws.[A1].Offset(i, 5) = Left(.Body, 100)
End With
Next 'i
'
' Log off the session
'
ns.Logoff
Set ol = Nothing
End Sub
Evidemment ca ne fonctionne qu'avec Outlook
N'est -t-il pas possible de la modifier pour qu'elle fonctionne avec OE?
Re : VBA: lister Sujets Eléments Envoyés (Outlook Express seulement)
Re,
voila un petit exemple tres basic pour recuperer les sujets des mails.
Il faut que tu ajoutes la reference MSMAPI que tu devrais trouver dans
c:\windows\system32\msmapi32.ocx
Code:
Sub ListeSujet()
Dim SessionMapi As MSMAPI.MapiSession
Dim MessagesMapi As MSMAPI.MapiMessages
Dim Cpt As Integer
Set SessionMapi = New MSMAPI.MapiSession
With SessionMapi
.LogonUI = False
.SignOn
End With
Set MessagesMapi = New MSMAPI.MapiMessages
With MessagesMapi
.SessionID = SessionMapi.SessionID
.Fetch
For Cpt = 0 To .MsgCount - 1
.MsgIndex = Cpt
On Error Resume Next
Feuil1.Range("A" & Feuil1.Range("A65536").End(xlUp).Row + 1) = .MsgSubject
On Error GoTo 0
Next
End With
SessionMapi.SignOff
End Sub
Re : VBA: lister Sujets Eléments Envoyés (Outlook Express seulement)
Bonjour Minick, leforum
Cette macro fonctionne t-elle sur un PC (Win98SE) avec
Outlook Express 6?
Aucun danger à l'éxécuter?
Car actuellement avec la macro test(2)
et maintenant FastDelete()
Code:
'Tirex28
Sub FastDelete()
On Error Resume Next
With Range(Range("A1"), Range("A65536").End(xlUp))
.AutoFilter field:=1, Criteria1:="<>Subj*"
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
End Sub
je travaillais sur une copie du fichier Elements envoyés.dbx, or ta macro agit en direct live sur OE
et j'ai un peu peur de l'éxécuter.
Edit:
Sur le PC en question, il y a deux identités dans Outlook Express
dont aucune n'est décalrée comme identité principale.
Pour utiliser ton code il faut que je déclare come identité principale
celle dont je ceux lister les sujets des mails envoyés?
PS: le but que je m'échine à obtenir est le suivant:
ce compte me sert pour candidater sur des offres emploi
et comme je n'ai pas trouver d'option dans OE (ni dans Thunderbird d'ailleurs)
pour imprimer la liste des sujets de mes mails envoyés
j'ai opter pour VBA
La solution "bidouille" fonctionne
(import dbx dans XL, puis macro)
Minick: Je trouve ta macro élégante, mais je n'ai pas encore osé la tester
Re : VBA: lister Sujets Eléments Envoyés (Outlook Express seulement)
re,
Je n'ai eu aucun souci avec la macro, je comprend ton inquietude
on est jamais trop prudent.
Par contre je viens de me rendre compte que tu voulais les mails envoyes et
non les mails recus.
Et la ca ne fonctionnera pas avec mon code.
En effet la version de MAPI utilisee ici ne permet de lister que les mails recus ou en attentes d'envois.
Re : VBA: lister Sujets Eléments Envoyés (Outlook Express seulement)
Bonjour le forum
Je vous livre ici la version finale (pour le moment)
Code:
Sub exportOBJMails()
Dim SourceFichier, DestinationFichier
Dim nom As String
'copie du fichier
'SourceFichier = "C:\repertoire contenant\Eléments envoyés.dbx"
DestinationFichier = "C:\OEtemp.txt"
' Copie le fichier source dans le fichier cible.
FileCopy SourceFichier, DestinationFichier
nom = "OBJ_Mails-" & Application.Text(Date, "ddmmyy")
Application.ScreenUpdating = False
'importation du fichier texte
ChDir "C:\"
Workbooks.OpenText "C:\OEtemp.txt", xlWindows, 1, _
xlDelimited, xlDoubleQuote, False, True, False, _
False, False, False, Array(Array(1, 1), Array(2, 1)) ' à vérifier / modifier
'enregistrement du fichier au format Excel
ActiveWorkbook.SaveAs nom, xlNormal
'Tirex28
On Error Resume Next
With Range(Range("A1"), Range("A65536").End(xlUp))
.AutoFilter field:=1, Criteria1:="<>Subj*"
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
Kill "C:\OEtemp.txt"
End Sub
->Minick: je continue également à chercher des infos en rapport
avec ta macro mais je ne trouve que des codes VBA
pour envoyer des mails
Re : VBA: lister Sujets Eléments Envoyés (Outlook Express seulement)
Salut,
J'ai explore plusieurs pistes mais rien a faire.
Outlook Express est trop timide pour nous livrer d'autres infos
que les messages recus ou en boite d'envoi.
J'ai aussi essaye plusieurs dll trouvees au cours de mes recherches
mais toujours la meme chose.
Soit il est impossible de la referencer dans vbe soit l'acces est limite
aux messages recus et a la boite d'envoi.
Desole de ne pas avoir pu t'apporter plus.
++
PS:
Si quelqu'un trouve la solution, je suis preneur pour ma culture perso.
Re : VBA: lister Sujets Eléments Envoyés (Outlook Express seulement)
Bonjour le forum, Minick (sois pas désolé et merci de ta contribution)
Je ne vois pas d'autres solutions que:
1) installer Outlook puisque il cause VBA
2) ou utiliser la macro "bidouillage" du précédent post(qui fonctionne)
ou espèrer , toujours et encore, que quelque part sur le net
quelqu'un (aficionados d'Excel/VBA) a un jour eu besoin d'imprimer les sujets de ses mails envoyés.
PS: Moi aussi, tout comme Minick, si solution il y a je suis preneur
Pris d'un soudain et fol espoir j'ai tenté une recherche que voici:
auteur: CareyJ:
Here's code to save EMail into a text file. This code does the following:
1. Signs on to the default Mapi account of the currently logged in user.
2. Fetches a collection of all Unread Messages in the Inbox folder
3. Prints OriginatorName, OriginatorAddress, MessageSubject, and MessageBody to a Text Dump File
To test it, start a new project and add the Component : Microsoft Mapi Controls. Then add a MapiSession control named "MapiSession1" and MapiMessages Control named "MapiMessages1". Add a Command Button named "Command1".
Then add this code to your form:
Code:
Private Sub Command1_Click()
Dim MsgDump As String
Dim FileCheck As String
MsgDump = "C:\Messages.txt"
If MAPISession1.SessionID = 0 Then MAPISession1.SignOn
MAPIMessages1.SessionID = MAPISession1.SessionID
MAPIMessages1.FetchUnreadOnly = True
MAPIMessages1.Fetch
If MAPIMessages1.MsgCount > 0 Then
FileCheck = Dir(MsgDump)
If FileCheck = "Messages.txt" Then
Open MsgDump For Append As #1
Else
Open MsgDump For Output As #1
End If
While MAPIMessages1.MsgIndex < MAPIMessages1.MsgCount - 1
Print #1, MAPIMessages1.MsgOrigDisplayName & vbCrLf
Print #1, MAPIMessages1.MsgOrigAddress & vbCrLf
Print #1, MAPIMessages1.MsgSubject & vbCrLf
Print #1, MAPIMessages1.MsgDateReceived & vbCrLf
Print #1, MAPIMessages1.MsgNoteText & vbCrLf & vbCrLf & vbCrLf
MAPIMessages1.MsgIndex = MAPIMessages1.MsgIndex + 1
Wend
Close #1
End If
MAPISession1.SignOff
End Sub
Sauf qu'il s'agit d'inbox, et je ne trouve comment nommer en VBA Sent Items.dbx