2016-07-29 18 views
2

Dies ist in Bezug auf Excel & Outlook 2013-Export E-Mail-Daten auf bestimmte Felder in CSV-Datei (oder XLS-Datei)

ich auf ein Problem arbeite, wo ich muss ...

  1. Per E-Mail
  2. haben, dass E-Mails automatisch in einen bestimmten Ordner
  3. in einer E-Mail Haben Sie bewegt die Ordner exportiert in eine CSV-Datei
  4. Die Daten in dieser Datei müssen unter bestimmten Spalten stehen.

Ich kann alle oben genannten erreichen, außer # 4. Das Skript platziert den gesamten Text der E-Mail in verschiedenen Zellen, abhängig von Haltepunkten.

Hier ist eine Kopie der E-Mail-I Export benötigen:

Area of ​​Interest: Job
Art der Arbeit: Vollzeit
Campus Ort: Montgomery
----- ----------------
Kontakt:

Titel: Manager-
Kontakt Name: Wilson
012.351.Kontakt Vorname: Allison
Adresse: 3424 Peachtree Rd NE
Stadt: Atlanta
Bundesstaat: Georgia
PLZ: 30326
Telefon: 4042669876
E-Mail: [email protected]
---------------------
Unternehmensinformation:

Firmenname: Pe rshing, Yoakley & Associates
Firma Telefon: 4042669876
Firma Fax-Nummer:
Unternehmens-Website:
Art des Unternehmens:
------------------- -
Job Details:

Berufsbezeichnung: Medical Assistant
Startdatum: 1. August 2016
Jobtyp: Vollzeit
Gehaltsspanne: 25.000 $
Referral Quelle:
---------------------
Job Beschreibung:
Eine Spezialität der Praxis in Montgomery , AL sucht einen medizinischen Assistenten. Vorherige
Erfahrung in einer medizinischen Praxis ist bevorzugt.Kandidaten müssen hervorragende
zwischenmenschlichen und Kundendienst Fähigkeiten und müssen Selbst-Starter
und Multi-Taskers - Assistenzarzt mit Untersuchung und Behandlung von
Patienten und Wartung von klinischen Geräten.


Interessierte Kandidaten sollten ihren Lebenslauf an [email protected] senden.
---------------------
Auftragsverfahren:

------------------ ---
Hiring Prozess:

Telefon Interview: Ja
Background Check: Ja
Reference Check: Ja
Credit Check: Nein
Technical Test: Nein
Persönlichkeitstest: Nein
Körperliche Untersuchung : Nein
Driving Datensätze: Nein
Sonstiges: Nein
---------------------
Gewünscht Weise fortgesetzt zu erhalten:

Fax: No
Mail: Nein
E-Mail: Ja
persönlich Nehmen: keine
bewerben Sie sich online: Keine
---------------------
Weitere Anfragen:

Die obigen bolded Bereichen haben sich in folgende Bereiche fallen:

Job Title | Company Name | Description | Contact Name | Contact Email | Zip | Salary | Start Date | 

Hier ist, was ich bisher haben (in Bezug auf # 's 1-3 oben) ..., die ich in Dieseoutlooksitzung platziert haben von Outlook.

Was auch immer nicht fett ist, sollte auch nicht zum CSV gehen.

Option Explicit 
Private WithEvents Items As Outlook.Items 

Private Sub Application_Startup() 

    Dim olApp As Outlook.Application 
    Dim objNS As Outlook.NameSpace 
    Set olApp = Outlook.Application 
    Set objNS = olApp.GetNamespace("MAPI") 

    '// The INCOMING JOBS folder must be a folder of the INBOX. 

    Set Items = objNS.GetDefaultFolder(olFolderInbox).Folders("Incoming Jobs").Items 

End Sub 
Private Sub Items_ItemAdd(ByVal item As Object) 

    On Error GoTo ErrorHandler 

    Dim Msg As Outlook.MailItem 

    Dim iFile As Integer 

    If TypeName(item) = "MailItem" Then 



     Set Msg = item 

     iFile = FreeFile 
     Open "C:\Temp\INCOMING_JOBS.CSV" For Append As #iFile 

     Print #iFile, Replace(Msg.Body, vbCrLf, ",") 
     Close #iFile 

    End If 

ExitPoint: 

    Exit Sub 

ErrorHandler: 

    MsgBox Err.Number & " - " & Err.Description 
    Resume ExitPoint 

    '// Debug only 
    Resume 

End Sub 
+0

Haben Sie gesehen [This] (http://stackoverflow.com/questions/11781320/download-attachment-from-outlook-and-open-in-excel)? –

+0

Ich sah es mir nur an. Aber das Ziehen von Outlook-Standardobjekten ist nicht der schwierigste Teil. Der schwierige Teil besteht darin, bestimmte Teile des E-Mail-Körpers herauszuziehen und sie in ihre entsprechenden Zellen in der CSV-Datei zu platzieren. Aber gutaussehend! Vielen Dank. – webfrogs

Antwort

2

Wenn Sie nur dies tun:

Print #iFile, Replace(Msg.Body, vbCrLf, ",") 

dann speichern, es wird alle der Inhalte in die Datei.

Was müssen Sie tun, ist die Datei zunächst auf vbCrLf in ein Array von Zeilen aufgeteilt:

Dim arr 
arr = Split(Msg.Body, vbCrLf) 

Dann müssen Sie über diese Zeilen in einer Schleife für die spezifisch diejenigen, suchen Sie extrahieren möchten: es Am besten wäre, dass in Funktion zu setzen, die Sie von Ihrem Haupt-Code aufrufen können:

Ungeprüfte:

Function LineContent(arr, txtHeader) as String 
    Dim rv as string, i as long 
    for i=lbound(arr) to ubound(arr) 
     if arr(i) Like txtHeader & "*" then 
      rv = trim(replace(arr(i),txtHeader,"") 
      exit for 
     end if 
    next i 

    LineContent = rv 
End function 

Dann rufen Sie diese Funktion wie folgt aus:

Dim cLastName as String 
cLastName = LineContent(arr, "Contact Last Name:") 

Sobald Sie alle Variablen haben, die Sie brauchen, können Sie sie in einer Zeile an Ihre CSV anhängen.

Vorbehalte: Keiner der Werte, die Sie extrahieren möchten, kann Zeilenumbrüche enthalten (dies könnte ein Problem für "Jobbeschreibung" sein), und wenn einer der Werte ein Komma enthalten könnte, müssen Sie sie umbrechen " "bevor Sie sie in Ihre CSV-Datei schreiben.

+0

++ Schön :) 'rv = trimmen (ersetzen (arr (i), txtHeader &": "," ")' oder 'rv = trimmen (Split (arr (i),": ") (1)' –

+0

@ SiddharthRout - Ich habe das ":" in txtHeader beim Aufruf der Funktion ... –

+0

Yeah sah ich das: D. –