Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1516to1520
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
VBA import in Outlook
28.09.2016 16:02:15
Urs
Hallo
Ich bin neu auf diesem Portal und habe ein Problem, dass vermutlich schon diskutiert wurde, habe aber keine richtige Lösung gefunden.
Ich möchte aus einer Excel-Datei eine grössere Mengen Kalendereinträge ins Outlook einfügen. Dabei dürfen keine Duplikate bestehen und die Kategoriefarbe müsste auch mit, sowie Ort, Bemerkungstext, Erinnerung usw.
Eigentlich müsste ich das Format so haben, wie wenn ich es manuell exportiert hätte. Die Möglichkeit manuell über Datenimport möchte ich nicht, sondern ein Makro, weil es immer wieder Termine gibt, die die User einlesen müssen.
Besten Dank.
Gruss
Urs

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA import in Outlook
28.09.2016 16:46:34
firmus
Hi Urs,
anbei ein getestetes Beispiel. Kategorie eintragen ist mit enthalten.
https://www.herber.de/bbs/user/108488.xlsm
Der einfachste Weg um den Kategorien eine Farbe zu geben ist in Outlook selbst.
Falls Du es jedoch in der VBA machen willst, hier noch ein Beispiel die
aktuell gesetzten Kategorien auszulesen. (siehe Copyright, nicht von mir erstellt, nur getestet).
Damit kannst Du prüfen, bevor Du sie beim Import setzt.
Option Explicit
Private Const CATFILE As String = _
"C:\Users\Public\Documents\CategoriesTransfer.txt"
Public Sub ExportCategories()
' Exportiert alle Kategorien aus der Standard-PST-Datei ab Outlook® 2007
' in eine Textdatei
' (c) Peter Marchert - http://www.outlook-stuff.com
' 2008-11-21 Version 1.0.0
Dim objCategories As Object
Dim objCategory As Object
Dim lngFF As Long
' Eventuell bereits vorhandene Export-Datei löschen
If Dir(CATFILE)  "" Then Call Kill(CATFILE)
' Freie Dateinummer ermitteln
lngFF = FreeFile
' Export-Datei schreibend öffnen
Open CATFILE For Output As #lngFF
' Verweis auf Kategorien-Objekt setzen
Set objCategories = Outlook.GetNamespace("Mapi").Categories
' Alle Kategorien bearbeiten
For Each objCategory In objCategories
With objCategory
' Haupteigenschaften in Export-Datei schreiben (Name, Farbe
' und Tastaturzugriff)
Print #lngFF, .Name & ";" & .Color & ";" & .ShortcutKey
End With
Next
' Export-Datei wieder schliessen
Close #lngFF
' Meldung an Benutzer ausgeben
MsgBox "Exportierte Kategorien: " & objCategories.Count _
, vbInformation + vbOKOnly
' Objekte löschen
Set objCategories = Nothing
Set objCategory = Nothing
End Sub

Gruß
Firmus
Anzeige
AW: VBA import in Outlook
29.09.2016 08:07:55
Scheidegger
Hallo firmus,
Danke für die prompte Antwort. Bei der Zeile "Set objCategories = Outlook.GetNamespace("Mapi").Categories" erscheint noch eine Fehlermeldung. Varaible nicht definiert (Outlook). Ich habe aber inzwischen auch einen andern Ansatz, den ich brauchen kann.
Auf jeden Fall danke für den Hinweis.
Gruss
Urs
AW: VBA import in Outlook
29.09.2016 09:45:15
Scheidegger
Hallo
Ich noch einmal. Habe wie schon vorher beschrieben ein anderes Makro im Internet gefunden und leicht angepasst. Alles würde funktionieren, ausser dass es mir bei Erinnerung nichts mitgibt. Habe dazu den folgenden Code:
Sub createAppointments()
On Error Resume Next
Dim sheet As Worksheet, rngStart As Range, rngEnd As Range, cell As Range, _
colRem As Range, remindd As Range, objRem As Range
Set objOL = CreateObject("Outlook.Application")
Set objCal = objOL.Session.GetDefaultFolder(9)
Set sheet = Worksheets(1)
Set rngStart = sheet.Range("A2")
Set rngEnd = rngStart.End(xlDown)
Set remindd = Outlook.Reminders
Set objRem = colReminders.Item(1)
counter = 0
For Each cell In sheet.Range(rngStart, rngEnd)
strSubject = cell.Text
strStartDate = cell.Offset(0, 1).Text 'B= Beginntam
strStartTime = cell.Offset(0, 2).Text 'C= Beginntum
strEndDate = cell.Offset(0, 3).Text   'D= Beginntam
strEndTime = cell.Offset(0, 4).Text   'E= Enddatum
boolAllDay = cell.Offset(0, 5).Value  'F= Ganztägig
objRem = cell.Offset(0, 6).Value      'G= ErinnerungEinAus
remindd = cell.Offset(0, 7).Text      'H= Erinnerungam
strCategory = cell.Offset(0, 11).Text 'L= Kategorie
strComment = cell.Offset(0, 9).Text   'J= Beschreibung
'####################################################################################### _
' Spalten
' Betreff(A), Beginntam(B), Beginntum(C), Beginntam(D), Endetum(E), Ganztägig(F),
' ErinnerungEinAus(G), Erinnerungam(H), Erinnerungum(I), Beschreibung(J), Ort  _
Kategorien(K)
'####################################################################################### _
'Eventuelles Duplikat des Termins finden ---------
Dim dupe_item As Object, itm As Object
If boolAllDay Then
Set dupe_item = objCal.items.Restrict("[Start] = """ & Format(strStartDate, "ddddd") _
& _
" 12:00 AM"" AND [END] = """ & Format(DateAdd("d", 1, DateValue(strEndDate)), " _
ddddd") & _
" 12:00 AM"" AND [Subject] = '" & strSubject & "'")
Else
Set dupe_item = objCal.items.Restrict("[Start] = """ & Format(strStartDate & " " &  _
_
strStartTime, "ddddd h:nn AMPM") & """ AND [END] = """ & Format(strEndDate & " " &  _
_
strEndTime, "ddddd h:nn AMPM") & """ AND [Subject] = '" & strSubject & "'")
End If
Set itm = dupe_item.GetFirst
Set olApp = IIf(itm Is Nothing, objCal.items.Add(1), itm)
With olApp
.Subject = strSubject
.ReminderSet = False
If strCategory  "" Then
.Categories = strCategory
End If
.Body = strComment
If boolAllDay = True Then
.AllDayEvent = True
If IsDate(strStartDate) Then
.Start = DateValue(strStartDate)
.End = DateAdd("d", 1, DateValue(strStartDate))
.Save
counter = counter + 1
Else
MsgBox "Termin mit dem Betreff: '" & strSubject & "' in Zeile " & cell.Row & _
_
" hat ungültige oder fehlende Zeitangaben", vbExclamation
End If
Else
.AllDayEvent = False
If IsDate(strStartDate) And IsDate(strEndDate) And IsDate(strStartTime) And  _
IsDate(strEndTime) Then
.Start = DateValue(strStartDate) & " " & TimeValue(strStartTime)
.End = DateValue(strEndDate) & " " & TimeValue(strEndTime)
.Save
counter = counter + 1
Else
MsgBox "Termin mit dem Betreff: '" & strSubject & "' in Zeile " & cell.Row & _
_
" hat ungültige oder fehlende Zeitangaben", vbExclamation
End If
End If
End With
Next
Set objOL = Nothing
MsgBox counter & " Termin(e) wurden erstellt!", vbInformation
End Sub

Anzeige
AW: VBA import in Outlook
29.09.2016 16:22:52
firmus
Hi Urs,
dieses Stück code bewirkt, dass kein Reminder gesetzt wird.
       With olApp
.Subject = strSubject
.ReminderSet = False
Ausserdem solltest Du als erste Zeile die Anweisung "Option Explicit" eintragen. Details siehe Hilfe.
Prüfe auch bitte wie Boolean zu handhaben sind.
Gruß
Firmus
AW: VBA import in Outlook
29.09.2016 17:06:57
Scheidegger
Hallo firmus
Danke für die Tipps. Hat jetzt auch geklappt mit dem Reminder. Nur noch eine Kleinigkeit, die ich noch vermisse. Wie kann ich im Makro noch den "Ort" anzeigen lassen. Habe es mit "Ort As Range" und "Set Ort = Location" probiert. Gibt keine Fehlermeldung, bringt aber auch nichts.
Wenn das noch gehen würde wäre ich dann happy.
Tolle Seite!
Gruss
Urs
Anzeige
AW: VBA import in Outlook
29.09.2016 18:41:39
firmus
Hallo Urs,
an der gleichen Stelle wo

With olApp
.Subject = strSubject
.ReminderSet = False
steht, kannst Du die Zeile

.Location= "irgendwo.nirgendwo"
einfügen.
Allerdings muss die Ort-Information auch irgenwo herkommen.
Gruß
Firmus
AW: VBA import in Outlook
30.09.2016 07:43:39
Urs
Hallo firmus
Tolle Sache, jetzt bin ich happy. Funktioniert tadellos. Habe es mit

Ort As String, Ort = cell.Offset(0, 10).Value
und wie du gesagt hast unten bei With olApp..... mit

.Location = Ort
eingefügt.
Ich bedanke mich bei dir für die Hilfe und vielleicht ein anderes Mal.
Gruss
Urs
Anzeige

108 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige