Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Outlook-Kalender importieren

Forumthread: Outlook-Kalender importieren

Outlook-Kalender importieren
29.01.2003 21:19:37
Thomy
Hallo
Ich hab in diesem Forum ein Makro gefunden, mit welchem ich meine Kalendereinträge aus Outlook importieren kann.
Leider erhalte ich schon bei der 2. Zeile folgende Fehlermeldung:
Fehler beim Kompilieren.
Benutzer definierter Typ nicht definiert.

Sub Kalenderdaten_einlesen()
Dim olApp As Outlook.Application
Dim Termin As Outlook.AppointmentItem
Dim i As Long, j As Long
Set olApp = New Outlook.Application

Für Hinweise im Voraus besten Dank.
Thomy

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Outlook-Kalender importieren
29.01.2003 21:23:31
Bernd Held

Hallo Thomy,

du musst in der Entwicklungsumgebung unter Extras/Verweise die Outlook-Bibliothek aktivieren.

Viele Grüße
Bernd
MVP für Microsoft Excel
Noch mehr Excel-Tipps und VBA-Datenbank unter: http://held-office.de



Anzeige
Re: Outlook-Kalender importieren
29.01.2003 21:41:46
Thomy

Hallo Bernd
Vielen Dank für die schnelle Antwort. Die Meldung erscheint nicht mehr, dafür eine neue.
Ich habe sie unten mit ****** markiert.
Fehler beim Kompilieren
Falsche Anzahlan Argumenten oder ungültige Zuweisung einer Eigenschaft.

Hier der ganze Code:
Sub Kalenderdaten_einlesen()

Dim olApp As Outlook.Application
Dim Termin As Outlook.AppointmentItem
Dim i As Long, j As Long
Set olApp = New Outlook.Application

i = 1
Application.ScreenUpdating = False
Cells(i, 1) = "Betreff"
Cells(i, 2) = "Inhalt/Body"
Cells(i, 3) = "Start"
Cells(i, 4) = "Ende"
Cells(i, 5) = "Erinnerung Minuten"
Cells(i, 6) = "Anzeigen als"
Cells(i, 7) = "Kategorien"
Cells(i, 8) = "Erstellt am"
Range(Cells(i, 1), Cells(i, 8)).Select
Selection.Interior.ColorIndex = 15

i = i + 1
For Each Termin In olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar).Items
****** If Not Termin.AllDayEvent Then Trag_ein , i, False
Next

Range("C1").Select
Range("A1:H" & Range("A1").CurrentRegion.Rows.Count).Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess

i = i + 1
j = i
Cells(i, 1) = "Betreff"
Cells(i, 2) = "Ereignis am"
Cells(i, 3) = "Erinnerung Minuten"
Cells(i, 4) = "Anzeigen als"
Cells(i, 5) = "Kategorien"
Cells(i, 6) = "Erstellt am"
Range(Cells(i, 1), Cells(i, 6)).Select
Selection.Interior.ColorIndex = 15
i = i + 1
For Each Termin In olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar).Items
If Termin.AllDayEvent And Not Termin.IsRecurring Then Trag_ein Termin, i, True
Next
Range("C" & j).Select
Range("A1:F" & Range("A" & j).CurrentRegion.Rows.Count).Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess

i = i + 1
j = i
Cells(i, 1) = "Betreff"
Cells(i, 2) = "jährliches Ereignis am"
Cells(i, 3) = "Erinnerung Minuten"
Cells(i, 4) = "Anzeigen als"
Cells(i, 5) = "Kategorien"
Cells(i, 6) = "Erstellt am"
Range(Cells(i, 1), Cells(i, 6)).Select
Selection.Interior.ColorIndex = 15
i = i + 1
For Each Termin In olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar).Items
If Termin.AllDayEvent And Termin.IsRecurring Then Trag_ein Termin, i, True
Next
Range("C" & j).Select
Range("A1:F" & Range("A" & j).CurrentRegion.Rows.Count).Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess

Set Termin = Nothing
Set olApp = Nothing

Columns("A:H").Select
Columns("A:H").EntireColumn.AutoFit
Range("A1").Select

Application.ScreenUpdating = True
End Sub


Sub Trag_ein()
Termin As AppointmentItem, i As Long, Ereignis As Boolean
Dim Anzeigen_als As String
Dim Spalte As Integer
Dim Erinnerung As String
Select Case Termin.BusyStatus
Case olFree
Anzeigen_als = "Frei"
Case olTentative
Anzeigen_als = "Unter Vorbehalt"
Case olBusy
Anzeigen_als = "Gebucht"
Case olOutOfOffice
Anzeigen_als = "Abwesend"
End Select

Cells(i, 1) = Termin.Subject

If Not Ereignis Then
Cells(i, 2) = Termin.Body
Cells(i, 3) = Termin.Start
Cells(i, 3).NumberFormat = "dd/mm/yyyy hh:mm"
Cells(i, 4) = Termin.End
Cells(i, 4).NumberFormat = "dd/mm/yyyy hh:mm"
Cells(i, 5) = Termin.ReminderMinutesBeforeStart
Cells(i, 6) = Anzeigen_als
Cells(i, 7) = Termin.Categories
Cells(i, 8) = Termin.CreationTime
Else
Cells(i, 2) = Termin.Start
Cells(i, 2).NumberFormat = "dd/mm/yyyy hh:mm"
If Termin.ReminderMinutesBeforeStart <= 60 Then
Erinnerung = Termin.ReminderMinutesBeforeStart & " Minuten"
ElseIf Termin.ReminderMinutesBeforeStart / 60 < 24 Then
Erinnerung = Termin.ReminderMinutesBeforeStart / 60 & " Stunden"
Else
Erinnerung = Termin.ReminderMinutesBeforeStart / 60 / 24 & " Tage"
End If
Cells(i, 3) = Erinnerung
Cells(i, 3).NumberFormat = "General"
Cells(i, 4) = Anzeigen_als
Cells(i, 5) = Termin.Categories
Cells(i, 6) = Termin.CreationTime
End If
i = i + 1
End Sub

Für weiter Tipps vielen Dank.
Thomy



Anzeige
Re: Outlook-Kalender importieren
29.01.2003 21:54:32
Bernd Held

Hallo Thomy,

oj, ich habs hingekriegt:

Sub Kalenderdaten_einlesen()

Dim olApp As Outlook.Application
Dim Termin As Outlook.AppointmentItem
Dim i As Long, j As Long
Set olApp = New Outlook.Application

i = 1
Application.ScreenUpdating = False
Cells(i, 1) = "Betreff"
Cells(i, 2) = "Inhalt/Body"
Cells(i, 3) = "Start"
Cells(i, 4) = "Ende"
Cells(i, 5) = "Erinnerung Minuten"
Cells(i, 6) = "Anzeigen als"
Cells(i, 7) = "Kategorien"
Cells(i, 8) = "Erstellt am"
Range(Cells(i, 1), Cells(i, 8)).Select
Selection.Interior.ColorIndex = 15

i = i + 1
For Each Termin In olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar).Items
If Not Termin.AllDayEvent Then Trag_ein Termin, i, True
Next

Range("C1").Select
Range("A1:H" & Range("A1").CurrentRegion.Rows.Count).Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess

i = i + 1
j = i
Cells(i, 1) = "Betreff"
Cells(i, 2) = "Ereignis am"
Cells(i, 3) = "Erinnerung Minuten"
Cells(i, 4) = "Anzeigen als"
Cells(i, 5) = "Kategorien"
Cells(i, 6) = "Erstellt am"
Range(Cells(i, 1), Cells(i, 6)).Select
Selection.Interior.ColorIndex = 15
i = i + 1
For Each Termin In olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar).Items
If Termin.AllDayEvent And Not Termin.IsRecurring Then Trag_ein Termin, i, True
Next
Range("C" & j).Select
Range("A1:F" & Range("A" & j).CurrentRegion.Rows.Count).Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess

i = i + 1
j = i
Cells(i, 1) = "Betreff"
Cells(i, 2) = "jährliches Ereignis am"
Cells(i, 3) = "Erinnerung Minuten"
Cells(i, 4) = "Anzeigen als"
Cells(i, 5) = "Kategorien"
Cells(i, 6) = "Erstellt am"
Range(Cells(i, 1), Cells(i, 6)).Select
Selection.Interior.ColorIndex = 15
i = i + 1
For Each Termin In olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar).Items
If Termin.AllDayEvent And Termin.IsRecurring Then Trag_ein Termin, i, True
Next
Range("C" & j).Select
Range("A1:F" & Range("A" & j).CurrentRegion.Rows.Count).Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess

Set Termin = Nothing
Set olApp = Nothing

Columns("A:H").Select
Columns("A:H").EntireColumn.AutoFit
Range("A1").Select

Application.ScreenUpdating = True
End Sub


Sub Trag_ein(Termin As AppointmentItem, i As Long, Ereignis As Boolean)
Dim Anzeigen_als As String
Dim Spalte As Integer
Dim Erinnerung As String
Select Case Termin.BusyStatus
Case olFree
Anzeigen_als = "Frei"
Case olTentative
Anzeigen_als = "Unter Vorbehalt"
Case olBusy
Anzeigen_als = "Gebucht"
Case olOutOfOffice
Anzeigen_als = "Abwesend"
End Select

Cells(i, 1) = Termin.Subject

If Not Ereignis Then
Cells(i, 2) = Termin.Body
Cells(i, 3) = Termin.Start
Cells(i, 3).NumberFormat = "dd/mm/yyyy hh:mm"
Cells(i, 4) = Termin.End
Cells(i, 4).NumberFormat = "dd/mm/yyyy hh:mm"
Cells(i, 5) = Termin.ReminderMinutesBeforeStart
Cells(i, 6) = Anzeigen_als
Cells(i, 7) = Termin.Categories
Cells(i, 8) = Termin.CreationTime
Else
Cells(i, 2) = Termin.Start
Cells(i, 2).NumberFormat = "dd/mm/yyyy hh:mm"
If Termin.ReminderMinutesBeforeStart <= 60 Then
Erinnerung = Termin.ReminderMinutesBeforeStart & " Minuten"
ElseIf Termin.ReminderMinutesBeforeStart / 60 < 24 Then
Erinnerung = Termin.ReminderMinutesBeforeStart / 60 & " Stunden"
Else
Erinnerung = Termin.ReminderMinutesBeforeStart / 60 / 24 & " Tage"
End If
Cells(i, 3) = Erinnerung
Cells(i, 3).NumberFormat = "General"
Cells(i, 4) = Anzeigen_als
Cells(i, 5) = Termin.Categories
Cells(i, 6) = Termin.CreationTime
End If
i = i + 1
End Sub

Viele Grüße
Bernd
MVP für Microsoft Excel
Noch mehr Excel-Tipps und VBA-Datenbank unter: http://held-office.de



Anzeige
Re: Outlook-Kalender importieren
29.01.2003 22:05:43
Thomy

Hallo Bernd

Genial, vielen herzlichen Dank
Thomy

;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Outlook-Kalender importieren


Schritt-für-Schritt-Anleitung

Um Termine in Outlook zu importieren, kannst Du folgendes VBA-Skript verwenden. Achte darauf, dass Du die Outlook-Bibliothek aktiviert hast. Gehe dazu in der Entwicklungsumgebung auf Extras > Verweise und aktiviere die Outlook-Bibliothek.

Hier ist der einfache Code, um die Kalenderdaten aus Outlook in Excel zu importieren:

Sub Kalenderdaten_einlesen()
    Dim olApp As Outlook.Application
    Dim Termin As Outlook.AppointmentItem
    Dim i As Long, j As Long
    Set olApp = New Outlook.Application

    i = 1
    Application.ScreenUpdating = False
    Cells(i, 1) = "Betreff"
    Cells(i, 2) = "Inhalt/Body"
    Cells(i, 3) = "Start"
    Cells(i, 4) = "Ende"
    Cells(i, 5) = "Erinnerung Minuten"
    Cells(i, 6) = "Anzeigen als"
    Cells(i, 7) = "Kategorien"
    Cells(i, 8) = "Erstellt am"

    i = i + 1
    For Each Termin In olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar).Items
        If Not Termin.AllDayEvent Then Trag_ein Termin, i, False
        i = i + 1
    Next
    Application.ScreenUpdating = True
End Sub

Das Makro durchläuft alle Termine im Outlook-Kalender und trägt sie in die Excel-Tabelle ein.


Häufige Fehler und Lösungen

Ein häufiger Fehler, auf den Du stoßen könntest, ist der "Benutzer definierter Typ nicht definiert". Dieser Fehler tritt auf, wenn die Outlook-Bibliothek nicht aktiviert ist. Stelle sicher, dass Du dies unter Extras > Verweise überprüfst.

Ein weiterer typischer Fehler ist die Meldung: "Falsche Anzahl an Argumenten oder ungültige Zuweisung einer Eigenschaft". Um dies zu lösen, überprüfe den Code auf korrekte Parameterübergaben, insbesondere in der Trag_ein-Subroutine.


Alternative Methoden

Falls Du keine VBA-Programmierung verwenden möchtest, kannst Du auch eine CSV-Datei nutzen, um Kalenderdaten in Outlook zu importieren. Hierfür musst Du die Excel-Tabelle als CSV speichern:

  1. Speichere Deine Excel-Datei als CSV.
  2. Öffne Outlook und gehe zu Datei > Öffnen und Exportieren > Importieren/Exportieren.
  3. Wähle Aus anderen Programmen oder Dateien importieren und dann Comma Separated Values.
  4. Folge dem Assistenten, um die CSV-Datei in Deinen Outlook-Kalender zu importieren.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du Excel-Daten in Outlook Kalender importieren kannst:

  1. Erstelle eine Excel-Tabelle mit den Spalten: Betreff, Startdatum, Enddatum, Beschreibung.
  2. Verwende das obige VBA-Skript, um die Daten in Excel zu importieren.
  3. Achte darauf, dass die Datumsformate korrekt sind, damit Outlook die Termine richtig interpretiert.

Tipps für Profis

  • Wenn Du regelmäßig Outlook-Kalender nach Excel exportieren musst, speichere das VBA-Skript in einer Excel-Vorlage.
  • Nutze die Debug.Print-Anweisung im Code, um Fehlerquellen schneller zu identifizieren, indem Du den aktuellen Wert von Variablen ausgibst.
  • Du kannst auch Makros für spezifische Kalenderkategorien erstellen, um nur bestimmte Termine zu importieren.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Kalender in Outlook importieren?
Um mehrere Kalender zu importieren, musst Du die Ordnerstruktur in Outlook durchlaufen und für jeden Kalender den Importprozess wiederholen.

2. Was mache ich, wenn ich keine Berechtigung habe, um auf den Outlook-Kalender zuzugreifen?
Stelle sicher, dass Du die erforderlichen Berechtigungen hast. Wenn Du in einer Organisation arbeitest, kann es sein, dass der Administrator die Berechtigungen verwalten muss.

3. Wie kann ich Termine aus Excel importieren, ohne VBA zu verwenden?
Du kannst die Excel-Datei als CSV speichern und dann den Importassistenten in Outlook verwenden, um die Daten zu importieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige