MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Outlook (Express), sonst. Mailprogramme
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 22.03.2018, 08:28   #1
JoNNyDRuffy
Neuer Benutzer
Neuer Benutzer
Standard Frage - Text aus Mail auslesen und in Excel speichern (OUTLOOK)

Hallo zusammen,

wie ist es möglich den Mail Inhalt auszulesen und als String zu behandeln um daraus dann ein bestimmtes Wort das immer an der gleichen Stelle ist in ein Excel Tabelle zu speichern. Das sollte dann möglichst für jede Mail in einem bestimmten Unterordner passieren. Ist das in Outlook überhaupt möglich?

Gruß JoNNy
JoNNyDRuffy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.03.2018, 09:03   #2
mumpel
MOF Meister
MOF Meister
Standard

Hallo!

Das ist möglich. Hier mal als Beispiel eine Prozedur von mir.

Public Sub EintragenLizenzdaten()
Dim xlApp        As Object
Dim xlRange      As Long
Dim xlBook       As Excel.Workbook
Dim xlSheet      As Excel.Worksheet
Dim vntTempArray As Variant
Dim obj As Object

 Select Case True
        Case TypeOf Application.ActiveWindow Is Outlook.Inspector
             Set obj = Application.ActiveInspector.CurrentItem
        Case Else
             With Application.ActiveExplorer.Selection
                  If .Count Then Set obj = .Item(1)
             End With
                 If obj Is Nothing Then Exit Sub
 End Select

vntTempArray = Split(obj.Body, vbCrLf)

Set xlApp = New Excel.Application

        With xlApp
             .Visible = True
             .Workbooks.Open Environ("USERPROFILE") & "\Documents\0-Lizenzen\HP_Lizenzen.xlsb"
                 Set xlBook = xlApp.Workbooks("HP_Lizenzen.xlsb")
                 Set xlSheet = xlBook.Sheets("Tabelle1")
                     With xlBook
                          With xlSheet
                               xlRange = .Range("A" & .Rows.Count).End(xlUp).Row + 1
                               .Range("A" & xlRange) = vntTempArray(0)
                               .Range("B" & xlRange) = vntTempArray(1)
                               .Range("C" & xlRange) = vntTempArray(3)
                               .Range("D" & xlRange) = vntTempArray(4)
                               .Range("E" & xlRange) = vntTempArray(5)
                               .Range("F" & xlRange) = vntTempArray(6)
                               .Range("G" & xlRange) = vntTempArray(7)
                               .Range("H" & xlRange) = vntTempArray(2)
                               .Range("I" & xlRange) = vntTempArray(8)
                          End With
                        .Save
                        .Close
                     End With
                .Quit
        End With

ende:


xlRange = 0
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
End Sub



VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0



Gruß, René
mumpel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.03.2018, 09:10   #3
mumpel
MOF Meister
MOF Meister
Standard

Das Beispiel geht übrigens davon aus dass das Wort allein in einer eigenen Zeile steht.

Wenn das Wort zwischendrin im Text steht wird es schwieriger, da muss man über den WordEditor gehen. Wie man das machen könnte kannst Du in meinem Workshop nachlesen (http://www.rholtz-office.de/outlook/...stellen_teil2), dort im Code bei "Untersreichen und Fett").
mumpel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.03.2018, 07:19   #4
JoNNyDRuffy
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Renè,

danke erstmal für die Antwort, ich weiß zumindest schon mal wie man es dann in Excel schreibt ,leider bringt er mir den Fehler:
"Benutzerdefinierter Typ nicht definiert"
Und der Link gibt mir nur Error 404.

Gruß JoNNy
JoNNyDRuffy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.03.2018, 09:12   #5
mumpel
MOF Meister
MOF Meister
Standard

Du musst einen Verweis auf Microsoft Excel setzen.
mumpel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.03.2018, 10:46   #6
JoNNyDRuffy
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Okay das hat soweit geklappt er nimmt jetzt quasi die Daten aus der aktuell geöffneten Mail.
Ist es hier auch möglich einen ganzen Mailordner durchzugehen und das für jede Mail zu machen ?
Das man den Split direkt so ins Array schreiben kann ist ja echt richtig cool so nebenbei.
Die Zeile die ausgelesen wird, an welcher Stelle kann ich die beeinflussen ?

Geändert von JoNNyDRuffy (26.03.2018 um 10:48 Uhr).
JoNNyDRuffy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.03.2018, 11:07   #7
JoNNyDRuffy
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Code:

Public Sub EintragenLizenzdaten()
Dim xlApp       As Object
Dim xlRange      As Long
Dim xlBook         As Excel.Workbook
Dim xlSheet      As Excel.Worksheet
Dim vntTempArray As Variant
Dim obj As Object

 Select Case True
        Case TypeOf Application.ActiveWindow Is Outlook.Inspector
             Set obj = Application.ActiveInspector.CurrentItem
        Case Else
             With Application.ActiveExplorer.Selection
                  If .Count Then Set obj = .Item(1)
             End With
                 If obj Is Nothing Then Exit Sub
 End Select

vntTempArray = Split(obj.Body, vbCrLf)

Set xlApp = New Excel.Application

        With xlApp
             .Visible = True
             .Workbooks.Open Environ("USERPROFILE") & "DocumentsTest.xlsx"
                 Set xlBook = xlApp.Workbooks("Test.xlsx")
                 Set xlSheet = xlBook.Sheets("Tabelle1")
                     With xlBook
                          With xlSheet
                               xlRange = .Range("A" & .Rows.Count).End(xlUp).Row + 1
                               .Range("A" & xlRange) = Mid(vntTempArray(15), 15, 45)
                               .Range("B" & xlRange) = Mid(vntTempArray(16), 22, 8)
                            End With
                        .Save
                        .Close
                     End With
                .Quit
        End With

ende:


xlRange = 0
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
End Sub
Habs jetzt mal in soweit umgebaut jetzt muss er das nur noch für jedes Mail Element in diesem Ordner machen.

Edit: Html hat nur die Slashes nicht übernommen das sind schon welche :P
JoNNyDRuffy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.03.2018, 12:04   #8
JoNNyDRuffy
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ok ich habs jetzt geschafft

Code:

Public Sub EintragenLizenzdaten()
Dim xlApp       As Object
Dim xlRange      As Long
Dim xlBook         As Excel.Workbook
Dim xlSheet      As Excel.Worksheet
Dim vntTempArray As Variant
Dim obj As Object

Dim objNS As Outlook.NameSpace: Set objNS = GetNamespace("MAPI")
Dim olFolder As Outlook.MAPIFolder
Set olFolder = objNS.GetDefaultFolder(olFolderInbox).Folders("*ORDNER*").Folders("*ORDNER*")
Dim Item As Object
Set xlApp = New Excel.Application
For Each Item In olFolder.Items
 
 Set obj = Item


vntTempArray = Split(obj.Body, vbCrLf)



        With xlApp
             .Visible = True
             .Workbooks.Open Environ("USERPROFILE") & "DocumentsTest.xlsx"
                 Set xlBook = xlApp.Workbooks("Test.xlsx")
                 Set xlSheet = xlBook.Sheets("Tabelle1")
                     With xlBook
                          With xlSheet
                               xlRange = .Range("A" & .Rows.Count).End(xlUp).Row + 1
                               .Range("A" & xlRange) = Mid(vntTempArray(15), 15, 45)
                               .Range("B" & xlRange) = Mid(vntTempArray(16), 22, 8)
                            End With
                        .Save
                        
                     End With
                
        End With

ende:

Next
xlApp.Close
xlApp.Quit
xlRange = 0
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

End Sub
Vielen herzlichen Dank für den Code da habe ich wieder was dazugelernt
Eine Frage habe ich aber noch was genau macht vbCrLf , ich hab das zwar mal geguckt aber das scheint irgendwie ein Platzhalter zu sein.

Gruß JoNNy
JoNNyDRuffy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.03.2018, 12:30   #9
mumpel
MOF Meister
MOF Meister
Standard

Zitat: von JoNNyDRuffy Beitrag anzeigen

was genau macht vbCrLf

"vbCrLf" ist der Zeilenumbruch (Carriage Return Line Feed). Das bedeutet dass der Emailinhalt Zeilenweise im Array gespeichert wird. Der Inhalt wird also immer am Zeilenanfang gesplittet. Zeile 1 bekommt im Array den Zähler 0, Zeile 2 den Zähler 1 und so weiter.

CrLf kommt m.W. übrigens von der Schreibmaschine. "Carriage Return" = "Wagen zurück", "Line Feed" = "Wagen eine Zeile weiter".

Geändert von mumpel (26.03.2018 um 12:33 Uhr).
mumpel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.03.2018, 13:56   #10
JoNNyDRuffy
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ah ok dank dir
Das ergibt jetzt auf jeden Fall mehr Sinn.
Sowas z.B. ist ein Vorteil von Windows gegenüber Linux :P
JoNNyDRuffy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.03.2018, 14:07   #11
mumpel
MOF Meister
MOF Meister
Standard

In Deinem Fall könntest Du auch auf das Splitten verzichten. Da musst Du aber mehr rechnen. Da zählt dann auch ein Zeilenumbruch jeweils ein Zeichen. Das zeilenweise Aufsplitten macht es m.E. leichter.
mumpel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.03.2018, 14:10   #12
JoNNyDRuffy
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ja klar einfach weil ich dann zeilenweise arbeiten kann das ist schon übersichtlicher.
Du kannst quasi eine Zeile rauspicken und die dann verarbeiten.
JoNNyDRuffy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:25 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.