Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1148to1152
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Uhrzeit der gesendeten E-Mail

Uhrzeit der gesendeten E-Mail
Heiko
Hallo, Excel Experten,
keine Ahnung, ob das geht...
Ist es möglich, per VBA die Uhrzeit der letzen gesendeten E-Mail eines jeden Tages (mit Datum) z. B. des letzten Jahres zu bestimmen und die Daten in eine Excel Tabelle zu schreiben?
Von Hand würde es mich wahrscheinlich Tage kosten.
Im Archiv habe ich nichts gefunden...
Vielen Dank im Voraus,
Heiko

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
vielleicht so...
28.03.2010 19:37:00
Tino
Hallo,
teste mal diese Version.
Benötigt den Verweis auf Microsoft Outlook Object Library
Du wirst nach dem Ordner gefragt den Du auslesen möchtest.
Getestet unter xl2007
Option Explicit
'Benötigt den Verweis auf Microsoft Outlook Object Library 
Sub MailsImportieren()
Dim objOutlook As Outlook.Application
Dim objnSpace As Namespace
Dim objFolder As MAPIFolder
Dim LRow As Long
Dim nCount As Integer
Dim myAr() As Variant

Set objOutlook = New Outlook.Application
Set objnSpace = objOutlook.GetNamespace("MAPI")
Set objFolder = objnSpace.PickFolder ''' Dialog 
   

With Tabelle1 'Tabellennamen anpassen !!!!!!! 
   
   'Zellen leer machen für neue Daten 
   .Range("A2:B" & .Rows.Count).Clear
   
   'Überschrift 
   .Cells(1, 1) = "Datum"
   .Cells(1, 2) = "Betreff"
   .Range("A1:B1").Font.Bold = True
   
   
   With objFolder
        'Array Dimensionieren 
        Redim myAr(1 To .Items.Count, 1 To 2)
   
        'Mails aus Ordner lesen 
        For nCount = 1 To .Items.Count
                 LRow = LRow + 1
                 myAr(LRow, 1) = .Items(nCount).SentOn  'Datum 
                 myAr(LRow, 2) = .Items(nCount).Subject 'Betreff 
        Next nCount
   End With
   
   'Daten in Zellen schreiben 
   .Range("A2").Resize(LRow, 2) = myAr
   'Breite der Spalten anpassen und Sort 
   With .Columns("A:B")
    .EntireColumn.AutoFit
    .Sort Key1:=.Cells(1, 1), Order1:=xlDescending, Header:=xlYes
   End With
End With

End Sub
Gruß Tino
Anzeige
hier mit Filter von bis Datum...
28.03.2010 20:53:38
bis
Hallo,
in dieser Version brauchst du den Verweis 'Outlook Object Library' nicht zu setzen.
Option Explicit
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function SetForegroundWindow Lib "user32" _
(ByVal hwnd As Long) As Long

Public vonDatum As Date, bisDatum As Date

Sub MailsImportieren()
Dim objOutlook As Object, objnSpace As Object, objFolder As Object, objItems As Object
Dim LRow As Long
Dim nCount As Integer
Dim myAr() As Variant
Dim HwndExel As Long

vonDatum = DateSerial(Year(Date) - 1, 1, 1) 'Filter von Datum 
bisDatum = DateSerial(Year(Date) - 1, 12, 31) 'Filter bis Datum 

HwndExel = GetForegroundWindow

Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")
Set objFolder = objnSpace.PickFolder ''' Dialog 

With Tabelle1 'Tabellennamen anpassen !!!!!!! 
   
   'Zellen leer machen für neue Daten 
   .Range("A2:B" & .Rows.Count).Clear
   
   'Überschrift 
   .Cells(1, 1) = "Datum"
   .Cells(1, 2) = "Betreff"
   .Range("A1:B1").Font.Bold = True
   
   With objFolder
        If .Items.Count > 0 Then
            
            Set objItems = .Items
            Set objItems = objItems.Restrict("[SentOn] >= '" & Format(vonDatum, "dd.mm.yyyy hh:mm") & "'" & _
                    "AND [SentOn] <= '" & Format(bisDatum, "dd.mm.yyyy hh:mm") & "'")
   
        
            'Array Dimensionieren 
            Redim myAr(1 To objItems.Count, 1 To 2)
            'Mails aus Ordner lesen 
            On Error Resume Next
            For nCount = 1 To objItems.Count
                     LRow = LRow + 1
                     myAr(LRow, 1) = objItems(nCount).SentOn  'Datum 
                     myAr(LRow, 2) = .Items(nCount).Subject 'Betreff 
            Next nCount
        End If
   End With
   
   If LRow > 0 Then
        'Daten in Zellen schreiben 
        .Range("A2").Resize(LRow, 2) = myAr
        'Breite der Spalten anpassen und Sort 
        With .Columns("A:B")
         .EntireColumn.AutoFit
         .Sort Key1:=.Cells(1, 1), Order1:=xlDescending, Header:=xlYes
        End With
   End If
End With

vonDatum = 0
bisDatum = 0

Set objOutlook = Nothing: Set objnSpace = Nothing
Set objFolder = Nothing: Set objItems = Nothing

SetForegroundWindow HwndExel

If LRow > 0 Then
    MsgBox "Daten gelesen", vbInformation + vbMsgBoxSetForeground, LRow & " E-Mails gefunden"
Else
    MsgBox "Daten gelesen", vbExclamation, "keine Daten gefunden"
End If

If Err.Number <> 0 Then
    MsgBox "Es sind Fehler aufgetreten!" & vbCr & vbCr & Err.Description, vbCritical + vbMsgBoxSetForeground
End If
End Sub
Gruß Tino
Anzeige
hier war noch ein Fehler...
29.03.2010 16:14:21
Tino
Hallo,
ändere
myAr(LRow, 2) = .Items(nCount).Subject 'Betreff
in
myAr(LRow, 2) = objItems(nCount).Subject 'Betreff
Gruß Tino

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige