Tool om emailbestanden te hernoemen naar ontvangstdatum

Pagina: 1
Acties:
  • 335 views sinds 30-01-2008
  • Reageer

  • Outerspace
  • Registratie: Februari 2002
  • Laatst online: 01:06

Outerspace

Admin General Chat

AFX Ghey Edition by HlpDsK

Topicstarter
Op dit moment moet ik allemaal emailtjes hernoemen voor mijn logboek. Aangezien dit zo'n 400 emailtjes zijn zoek ik een tool die gegevens kan uitlezen en daarna het bestand hernoemt naar datum van ontvangst.

Ik zat eerst te denken aan Total Commander, maar die kan alleen hernoemen op datum wanneer het is aangepast. Dus als ik het emailtje heb ontvangen op 09-11-2005 dan kan hij het niet naar die datum hernoemen aangezien het emailtje gisteren is aangepast (namelijk het importeren van het .pst bestand ;) Nu heb ik een beetje rondgekeken maar kan absoluut niets vinden. Heeft iemand een idee?

Wauw, een sig!


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Logboek? Maar hoe heb je de mailbestanden opgeslagen; als plaintext of als iets anders?

Als plaintext zou je een script kunnen schrijven die elk file uitleest om de datum te bekijken en dan het file hernoemt o.b.v. hiervan. Alternatief is een VBA script schrijven in Outlook om dan stuk voor stuk de mails te exporteren met de juiste naam.

In beide opties komt wel erg prominent het werkwoord schrijven voor :P

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Outerspace
  • Registratie: Februari 2002
  • Laatst online: 01:06

Outerspace

Admin General Chat

AFX Ghey Edition by HlpDsK

Topicstarter
F_J_K schreef op maandag 10 april 2006 @ 14:15:
Logboek? Maar hoe heb je de mailbestanden opgeslagen; als plaintext of als iets anders?

Als plaintext zou je een script kunnen schrijven die elk file uitleest om de datum te bekijken en dan het file hernoemt o.b.v. hiervan. Alternatief is een VBA script schrijven in Outlook om dan stuk voor stuk de mails te exporteren met de juiste naam.

In beide opties komt wel erg prominent het werkwoord schrijven voor :P
Ik had ook al iets gevonden over plaintext ja, maar dat weet ik zo niet uit het hoofd. Het probleem is echter dat ik geen ervaring heb met scripten in het algemeen. Ik zal nog eens proberen om alle email bestanden te exporteren naar Word of naar een ander Office product, misschien komt die data er dan wat gemakkelijk uitgerold.

offtopic:
Al die emailtjes die ik heb ontvangen staan mijn opdrachten in. Vandaar dat dat mijn logboek word aangezien ik geen groot .doc document hoef te gebruiken :P

[ Voor 10% gewijzigd door Outerspace op 10-04-2006 14:18 ]

Wauw, een sig!


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Export naar Excel, Access of csv/tabdelimited bevatten afaik geen verzend/ontvangstdatum zie ik nu. Dan wordt het nog lastig zonder scripten...

Anders via een omweg:
1 - PST naar mbox, zie bijv, http://www.cpqlinux.com/pst2mbox.html
2 - mbox naar eml met http://people.freenet.de/ukrebs/mbox2eml.html (waar filedatum die van het mailtje wordt)
3 - hernoem met totalcommander obv de datum

Als er een direct tooltje is, ken ik die niet maar dat zegt ook niet alles :P

Wegens de grote verhouding mail trouwens even SA --> OFF :)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Outerspace
  • Registratie: Februari 2002
  • Laatst online: 01:06

Outerspace

Admin General Chat

AFX Ghey Edition by HlpDsK

Topicstarter
Dank je wel voor de uitleg inclusief de links F_J_K :*
* Outerspace zal het als hij thuis komt allemaal even uitproberen en ik laat het wel even weten als het gelukt is :)

Wauw, een sig!


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Met een paar regels vba is dit niet zo moeilijk.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub exportmails()
    Dim mf As MAPIFolder
    Dim mi As MailItem
    Dim filenaam As String
    
    Const dp = ":"
    Const ep = "."
    Const path = "C:\"
    
   'haal de folder op waarin de te exporteren mails staan, hier bla onder postvak in
    Set mf = GetNamespace("Mapi").GetDefaultFolder(olFolderInbox).Folders("bla")
    ' loop door de folder heen    
    For Each mi In mf.Items
        ' haal ontvangstdatum en tijd op
        filenaam = mi.ReceivedTime
        'vervang ":" door "."
        While InStr(filenaam, dp) <> 0
            Mid(filenaam, InStr(filenaam, dp), 1) = ep
        Wend
       'en sla maar op, met als keuze doc, html, vcard, rtf, msg
        mi.SaveAs path & filenaam
    Next mi

End Sub

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Outerspace
  • Registratie: Februari 2002
  • Laatst online: 01:06

Outerspace

Admin General Chat

AFX Ghey Edition by HlpDsK

Topicstarter
Bedankt Niesje, ik ben hier mee bezig geweest alleen krijg het niet voor elkaar.
Al mijn bestanden staan in dit geval op C:\Test en ik heb ook een mapje bla aangemaakt onder Postvak In. Mijn vraag is, wat moet eventueel nog veranderen aan deze code of is dit "ready to go"?
offtopic:
en ik krijg een foutmelding dat mijn macro's in dit project zijn uitgeschakeld? Dus daar moet ik ook nog even achteraan

Wauw, een sig!


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Macro's: zie F1, je moet ze eerst ondertekeken met een certificaat (zie selfcert.exe).

Niesje vergeet een klein stapje: de extentie na filenaam. Dus voeg toe aan het begin: Const ext = ".msg"
en maak van de saveas 'mi.SaveAs path & filenaam & ext'

Oh, er moet natuurlijk een backslash aan het eind van de path, dus bijv. "C:\temp\"

En vanzelfsprekend (zie F1 bij GetDefaultFolder) moet je bla folder _in_ de Inbox staan.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Outerspace
  • Registratie: Februari 2002
  • Laatst online: 01:06

Outerspace

Admin General Chat

AFX Ghey Edition by HlpDsK

Topicstarter
Ik heb nu deze code:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub exportmails()
    Dim mf As MAPIFolder
    Dim mi As MailItem
    Dim filenaam As String
    
    Const dp = ":"
    Const ep = "."
    Const path = "C:\log\"
    Const ext = ".msg"
    
   'haal de folder op waarin de te exporteren mails staan, hier bla onder postvak in
    Set mf = GetNamespace("Mapi").GetDefaultFolder(olFolderInbox).Folders("bla")
    ' loop door de folder heen
    For Each mi In mf.Items
        ' haal ontvangstdatum en tijd op
        filenaam = mi.ReceivedTime
        'vervang ":" door "."
        While InStr(filenaam, dp) <> 0
            Mid(filenaam, InStr(filenaam, dp), 1) = ep
        Wend
       'en sla maar op, met als keuze doc, html, vcard, rtf, msg
        mi.SaveAs path & filenaam & ext
    Next mi

End Sub

Ik heb op dit moment een mapje aangemaakt op C:\log en heb ook nogmaals bla aangemaakt: Afbeeldingslocatie: http://img82.imageshack.us/img82/2412/mappen9ik.th.jpg

Echter krijg ik bij het uitvoeren van de macro deze error: Typen komen niet overeen (Fout 13).
Dat betekent dat er iets niet werkt, maar ik zou dus niet weten wat het is :X Iemand een idee?

Zelf snap ik deze opmerking van Niesje niet helemaal in de code : " 'vervang ":" door "."". Wat en waar moet ik dat veranderen en wanneer?

[ Voor 39% gewijzigd door Outerspace op 11-04-2006 09:44 ]

Wauw, een sig!


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Vreemd. Ik heb hetstukje VBA eens in Outlook gegooid en het werkt hier probleemloos. Heb je nog andere dingen dan mailberichten in de map bla staan? Loopt hij meteen vast of exporteert hij wel een x-aantal berichten voordat de fout optreedt?

Zet anders een onderbrekingspunt (zie F1) in je code en loop er stap voor stap met F8 doorheen.
Zelf snap ik deze opmerking van Niesje niet helemaal in de code : " 'vervang ":" door "."". Wat en waar moet ik dat veranderen en wanneer?
.
Nee, dat is wat dat stukje code doet. Het haalt uit de filenaam de dubbele punten in de tijdnotatie en vervangt die door een enkele punt.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Staat bla nu onder Inbox? Dat kan ik aan je screenshot niet zien. Kijk even in de 'mappenlijst'. Maar daarnaast wil je inderdaad met debugging aan de gang gaan en kijken waar het dan fout loopt.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Outerspace
  • Registratie: Februari 2002
  • Laatst online: 01:06

Outerspace

Admin General Chat

AFX Ghey Edition by HlpDsK

Topicstarter
Kijk, ik zie dat hij al een paar bestanden heeft hernoemd. Waarvoor mijn dank.
Echter, hij slaat op een gegeven moment vast met foutmelding 13. Ik heb gekeken in de map en ik kan niets anders dan concluderen dat er allemaal .msg bestanden in staan.

Daarnaast heb ik ook de debugging gebruikt, en daar kan ik echter niets uithalen. Mij werd verteld dat je een uitleg zou krijgen waar het mis zou gaan (dat word weergegeven), maar dat is niet het geval.
En ja F_J_K, bla staat onder Inbox ;)

[edit]
Ik krijg deze melding, maar waar het misgaat 8)7
Afbeeldingslocatie: http://img95.imageshack.us/img95/2838/error3nd.jpg

[ Voor 14% gewijzigd door Outerspace op 11-04-2006 11:58 ]

Wauw, een sig!


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

De code is een beetje quick&dirty. Een variantje:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Sub exportmails()
    On Error GoTo nop
    Dim mf As MAPIFolder
    Dim mi As MailItem
    Dim filenaam As String
    Dim I As Integer, errcount as integer
    
    Const dp = ":"
    Const ep = "_"
    Const path = "C:\"
    Const ext = ".msg"
    
    Set mf = GetNamespace("Mapi").GetDefaultFolder(olFolderInbox).Folders("bla")

   For I = 1 To mf.Items.Count
        Debug.Print I,
        Set mi = mf.Items(I)
        Debug.Print mi.ReceivedTime,
        filenaam = CStr(mi.ReceivedTime)
        While InStr(filenaam, dp) <> 0
            Mid(filenaam, InStr(filenaam, dp), 1) = ep
        Wend
       Debug.Print path & filenaam & ext
       mi.SaveAs path & filenaam & ext
NEXTONE:
    Next I
    if errcount>0 then
          msgbox "Er zijn " & errcount & " fout(en) opgetreden",vbokonly,"Fouten bij exporteren"
    end if
Exit Sub
nop:
    errcount=errcount+1
    Debug.Print Err.Description
    Resume NEXTONE
End Sub

Wat je nu ziet:
- als er een fout optreedt wordt die afgevangen
- datum wordt expliciet omgezet naar string
- de mailtjes worden opgehaald met een teller ipv for each
- de aktiviteiten worden gelogd. ALs hij klaar is kun je door in de VBA editor op ctrlG te drukken precies zien waar bij welk mailtje het mis ging. :)

[ Voor 10% gewijzigd door Lustucru op 11-04-2006 12:25 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Outerspace
  • Registratie: Februari 2002
  • Laatst online: 01:06

Outerspace

Admin General Chat

AFX Ghey Edition by HlpDsK

Topicstarter
Even een update.
Die 2 fouten die zitten er nog steeds in al weet ik niet waar het aan ligt zelfs niet met Control + G. Het mooie is dat van de 374 emailtjes 372 zijn hernoemd, en dat vind ik mooi zat.

Bij deze wil ik jullie graag bedanken :> O+

[ Voor 10% gewijzigd door Outerspace op 12-04-2006 13:24 ]

Wauw, een sig!

Pagina: 1