Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

Outlook - Excel | Herbers Excel-Forum


Betrifft: Outlook - Excel von: Melek
Geschrieben am: 09.01.2012 17:06:59

Liebes Forum,
habe folgendes Anliegen (hatte ich auch schon hier im Forum geschildert, bin aber noch nicht recht weitergekommen):

Wie kann ich mithilfe eines Makros einen Termin eines bestimmten Betreffs auslesen?
Z. B. möchte ich in excel den Betreff: Mustermann, Max eingeben und den Beginn und das Ende des Termins ausgelesen bekommen.

LG Melek

  

Betrifft: AW: Outlook - Excel von: JoWe
Geschrieben am: 09.01.2012 21:01:11

Hallo Melek,
ich glaub, dieser Link könnte Dich auf die richtige Spur bringen:
http://www.office-loesung.de/ftopic101092_0_0_asc.php
Gruß
Jochen


  

Betrifft: AW: Outlook - Excel von: Melek
Geschrieben am: 10.01.2012 13:29:17

Hallo Jochen,

auf dem angegebenen Pfad habe ich was gefunden, was aber einen Laufzeitfehler ergibt und es lässt sich auch nicht über Makros aktivieren. Da ich absoluter Anfänger bin, komme ich so nicht weiter.
Vielen Dank trotzdem.

Also liebes Forum:
Wie kann ich mithilfe eines Makros einen Termin eines bestimmten Betreffs auslesen?
Z. B. möchte ich in excel den Betreff: Mustermann, Max eingeben und den Beginn und das Ende des Termins aus Outlook ausgelesen bekommen.


LG Melek


  

Betrifft: AW: Outlook - Excel von: Dirk aus Dubai
Geschrieben am: 11.01.2012 09:04:11

Hallo Melek,

hier mal das angepasste Makro (in ein Modul):

Private Sub ReadCalendarItems()
    Dim objApp As Outlook.Application
    Dim objNS As Namespace
    Dim objCalendar As MAPIFolder
    Dim objItem As AppointmentItem
    Dim strSubject As String
    Dim ObjRecipient As Recipient
    Set objApp = CreateObject("Outlook.Application")
    Set objNS = objApp.GetNamespace("MAPI")
    Set objCalendar = objNS.GetDefaultFolder(olFolderCalendar)
    For Each objItem In objCalendar.Items
        With objItem
       
        Debug.Print "Titel: " & .Subject & vbCrLf & _
                    "Am:    " & .Start & " - " & .End & vbCrLf & _
                    "Dauer: " & IIf(.Duration = 1440, "Ganztägig", .Duration & " Minuten") &  _
vbCrLf & _
                    "Body:  " & .Body & vbCrLf & _
                    "Teilnehmer: " & .Recipients.Count
          If .Recipients.Count > 0 Then
            For Each ObjRecipient In .Recipients
              Debug.Print ObjRecipient.Name & " / "  ' & ObjRecipient.Address
            Next
          End If
        End With
    Next
   
End Sub
Damit das dann funktioniert musst Du im VBE unter Tools/References die Microsoft Outlook 1x.0 Object Library mit Haekchen versehen.


Lass' hoeren, ob ok.

Gruss

Dirk aus Dubai


  

Betrifft: AW: Outlook - Excel von: Melek
Geschrieben am: 14.01.2012 10:27:15

Hallo Dirk,

sorry für etwas verspätete Antwort.
Vielen Dank erstmal für Deinen Code.
Habe das Projekt in ein Modul eingefügt und bin aber auch nach langem hin - und herprobieren nicht weitergekommen.
1.) Ich kann das Modul nur in der Visual Basic Ansicht ausführen. Dann passiert auch was, aber unspezifisch d.h. es werden alle Termine im Direktbereich in der Visual Basic Anischt ausgegeben.
(Ist ja wahrscheinlich auch logisch, da ich nirgendwo einen Betreff eingebe).

Habe versucht, den Code in der Excel-Ansicht in ein Makro einzufügen und als Name ReadCalendarItems genommen, aber da kommt die Fehlermeldung, dass der Name mehrdeutig sei.

2.) Das eigentliche Problem ist aber noch, dass ich ja in Excel in eine Zelle z.B. A1 einen Betreff z.B. Mustermann bzw. Mustermann, Max eingeben will und dann soll der Termin zu diesem Betreff z.B. in die Zellen A4 etc. ausgegeben werden.

Vielleicht hört sich das ein wenig durcheinander an, deshalb fasse ich es nochmal kurz zusammen:
Also ich möchte in Zelle A1 einen Betreff eingeben und dann soll in Zelle A2 Sa 14.01.2012 und in Zelle A3 14:00 Uhr drinstehen und meinetwegen in Zelle A5 der body und das mithilfe eines Makros. Die Auswahl soll über den Betreff erfolgen.

Vielen Dank schonmal

LG Melek


  

Betrifft: AW: Outlook - Excel von: Melek
Geschrieben am: 14.01.2012 10:29:59

Hallo Dirk,

sorry für etwas verspätete Antwort.
Vielen Dank erstmal für Deinen Code.
Habe das Projekt in ein Modul eingefügt und bin aber auch nach langem hin - und herprobieren nicht weitergekommen.
1.) Ich kann das Modul nur in der Visual Basic Ansicht ausführen. Dann passiert auch was, aber unspezifisch d.h. es werden alle Termine im Direktbereich in der Visual Basic Anischt ausgegeben.
(Ist ja wahrscheinlich auch logisch, da ich nirgendwo einen Betreff eingebe).

Habe versucht, den Code in der Excel-Ansicht in ein Makro einzufügen und als Name ReadCalendarItems genommen, aber da kommt die Fehlermeldung, dass der Name mehrdeutig sei.

2.) Das eigentliche Problem ist aber noch, dass ich ja in Excel in eine Zelle z.B. A1 einen Betreff z.B. Mustermann bzw. Mustermann, Max eingeben will und dann soll der Termin zu diesem Betreff z.B. in die Zellen A4 etc. ausgegeben werden.

Vielleicht hört sich das ein wenig durcheinander an, deshalb fasse ich es nochmal kurz zusammen:
Also ich möchte in Zelle A1 einen Betreff eingeben und dann soll in Zelle A2 Sa 14.01.2012 und in Zelle A3 14:00 Uhr drinstehen und meinetwegen in Zelle A5 der body und das mithilfe eines Makros. Die Auswahl soll über den Betreff erfolgen.

Vielen Dank schonmal

LG Melek


  

Betrifft: AW: Outlook - Excel von: Dirk aus Dubai
Geschrieben am: 15.01.2012 06:40:14

Hallo Melek,

Das gepostete Beispiel war nur als solches gedacht und zum daran weiterarbeiten bestimmt.
Anyway, anei mal ein Workbook mit makro, welches entsprechend Deinen Wuenschen eintraegt.

https://www.herber.de/bbs/user/78455.xlsm

Lass' hoeren, ob ok.

Gruss

Dirk aus Dubai


  

Betrifft: AW: Outlook - Excel von: JoWe
Geschrieben am: 15.01.2012 12:18:23

Hallo Melek,

hier der Code der in das Modul MainBas gehört:

Sub ReadCalendarItems(Betreff As String)
Dim objApp As Outlook.Application
Dim objNS As Namespace
Dim objCalendar As MAPIFolder
Dim objItem As AppointmentItem
Dim strSubject As String
Dim ObjRecipient As Recipient
Dim i As Long
Set objApp = CreateObject("Outlook.Application")
Set objNS = objApp.GetNamespace("MAPI")
Set objCalendar = objNS.GetDefaultFolder(olFolderCalendar)
i = 1
'Leere Blatt
Application.EnableEvents = False
Range("A4:Z5").ClearContents
Application.EnableEvents = True
For Each objItem In objCalendar.Items
With objItem
If InStr(1, LCase(.Subject), LCase(Betreff)) <> 0 Then
Application.EnableEvents = False
If InStr(1, .Start, " ") <> 0 Then
If Left(.Start, InStr(1, .Start, " ") - 1) = Left(.End, InStr(1, .Start, " ") - 1) Then
'Resultat in Zellen schreiben
Cells(2, i).Value = "Datum: " & Left(.Start, InStr(1, .Start, " ") - 1)
Else
Cells(2, i).Value = "Datum: " & Left(.Start, InStr(1, .Start, " ") - 1) & " - " & Left(.End, InStr(1, .Start, " ") - 1)
End If
Cells(3, i).Value = "Uhrzeit: " & Mid(.Start, InStr(1, .Start, " ") + 1) & " - " & Mid(.End, InStr(1, .Start, " ") + 1)
Else
Cells(2, i).Value = .Start
End If
Cells(4, i).Value = "Betreff: " & .Subject
Cells(5, i).Value = "Text: " & .Body
'Spalte formatieren
With Columns(i)
.ColumnWidth = 40
.Cells.Rows.AutoFit
.Cells.HorizontalAlignment = xlCenter
.Cells.VerticalAlignment = xlTop
End With
i = i + 1
Application.EnableEvents = True
End If
End With
Next
If i = 1 Then
MsgBox "Keine Eintraege gefunden", 16
Else
MsgBox "Kalender durchsucht und Daten übergeben!", 64
End If
End Sub


jetzt noch der Code, der in die Klasse Tabelle´1 gehört:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
   If Target.Value <> "" Then
       Call MainBas.ReadCalendarItems(Target.Value)
   Else
       'Zelle ist leer, leere ausgabezellen
       Application.EnableEvents = False
       Range("A2:Z5").ClearContents
       Application.EnableEvents = True
   End If
End If
End Sub


Nun sollte nach einem Eintrag eines Betreffs in A1 + abschließender Enter-Taste das Makro starten und die entsprechenden Maildaten in die darunter befindlichen Zellen A2 bis A5 übertragen werden.

Gruß
Jochen


Beiträge aus den Excel-Beispielen zum Thema "Outlook - Excel"