Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1356to1360
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

Excel Termine nach Outlook ohne Duplikate

Excel Termine nach Outlook ohne Duplikate
28.04.2014 15:31:30
Becker
Werte Excellanten,
Folgendes Makro (aus Internet Forum) den ich gefunden habe funktioniert prima.

Sub Excel_Termin_nach_Outlook_Ohne_Duplikate()
Dim wksSheet As Worksheet
Dim objFolder As Object
Dim objOutApp As Object
Dim objTermin As Object
Dim lngRow As Long
On Error GoTo Fin
Set wksSheet = ThisWorkbook.Worksheets("Tabelle3") ' Anpassen!!!
'Set objOutApp = CreateObject("Outlook.Application")
'9 = olFolderCalendar
Set objFolder = objOutApp.GetNamespace("MAPI").GetDefaultFolder(9)
For lngRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Not fncPointExist(objFolder, wksSheet.Cells(lngRow, 2).Value) Then
Set objTermin = objOutApp.CreateItem(1)
With objTermin
.AllDayEvent = True
.Start = Format(wksSheet.Cells(lngRow, 1).Value _
+ 0, "dd.mm.yyyy") '& " 08:00"
.Subject = wksSheet.Cells(lngRow, 2).Value
.Save
End With
Set objTermin = Nothing
End If
Next lngRow
Fin:
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & " " & Err.Description
Set objFolder = Nothing
Set objTermin = Nothing
Set objOutApp = Nothing
If Err.Number = 0 Then MsgBox "Termine nach Outlook übertragen!"
End Sub
Private Function fncPointExist(ByVal objTMP As Object, _
ByVal strSubject As String) As Boolean
Dim objItem As Object
For Each objItem In objTMP.Items
If objItem.Subject = strSubject Then fncPointExist = True
Next
End Function

Wie kann man ein anderen Kalender (z.B."Schulung")anspreche oder anwählen?
Mit "Set apptOutApp = OutApp.GetNamespace("MAPI").PickFolder.Items.Add" probierte ich auch aber leider sind meine Kenntnisse in VBA noch extrem begrenzt so das ich allein nicht weiter komme.
Ich will Termine aus Excel (Tabelle3) nach Outlook 2013 Kalender ("Schulung") die Termine (ohne Duplikate) eintragen. Ab Spalte A2 steht das Datum, ab Spate B2 steht das Betreff. Mein Outlook Kalender hat 3 Kalender: 1.Kalender, 2.Private Kalender und Schulung.
Wie kann man per VBA den "Schulung" Kalender auswählen oder ansprechen?
Kennt sich jemand von Euch damit aus?
Wäre super, wenn mir jemand helfen könnte.
Ich Danke Euch für Euer Mühen
Freue mich über jeden Hinweis!
Netten Gruß
Daniel

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Termine nach Outlook ohne Duplikate
29.04.2014 16:17:03
bst
Hi,
Set objOutApp = CreateObject("Outlook.Application")
erstellt ein Outlook-Objekt, das brauchst Du auf alle Fälle.
Der Ordner um den es Dir geht ist objFolder.
Nimm anstatt von:
Set objFolder = objOutApp.GetNamespace("MAPI").GetDefaultFolder(9)
mal:
Set objFolder = objOutApp.GetNamespace("MAPI").PickFolder
zum Auswählen. Schau Dir nach dieser Anweisung ggf. mal objFolder.FolderPath genau an, z.B. via:
MsgBox objFolder.FolderPath
Wenn da "\\Persönliche Ordner\Kalender" drin steht kommst Du an diesen Ordner auch via:
Set objFolder = objOutApp.GetNamespace("MAPI").Folders("Persönliche Ordner").Folders("Kalender")
Falls da "\\Persönliche Ordner\Kalender\Schulung" stehen sollte braucht das:
Set objFolder = objOutApp.GetNamespace("MAPI").Folders("Persönliche Ordner").Folders("Kalender").Folders("Schulung")
HTH, Bernd

Anzeige
AW: Excel Termine nach Outlook ohne Duplikate
30.04.2014 14:11:33
Becker
Hallo Bernd,
Vielen Dank Dir für Deine Hinweise. Das ist grandios.
Hier hast du definitiv recht (habe erst später gemerkt das diese Variabele auskommentiert worden ist).
Dabei hatte ich diesen Fehler: 91 Objektvariable oder With-Blockvariable nicht festgelegt.
In meinen Outlook 2013 ist die Kalender Ordner Struktur so aufgebaut:
Meine Kalender (als Haupt Ordner) dann drunter alphabetisch, Kalender, Private Kalender(nur dieser Comuper) und Schulung.
Ich nehme an dass "Private Kalender(nur dieser Computer)" als Haupt Kalender gilt.
Dein Vorschlag ist fast perfekt und Spitze. Nach den PickFolder und den Kalender Auswahl "Schulung" trotzdem schreibt er den Termin ins "Private Kalender". Dabei hatte ich festgestellt wenn Dein Vorschlag angewendet wird dann werden die doppelte Termine immer neu angelegt.

Set objFolder = objOutApp.GetNamespace("MAPI").PickFolder


MsgBox objFolder.FolderPath
Sehr gern würde ich den Makro so anpassen und in VBA den Ordner festlegen.
Das fand ich echt Super:
MsgBox objFolder.FolderPath

Folgende Fenster zeigt es mir vor:
\\mustername@muster.de\Kalender(nur dieser Computer)\Schulung.
Denn habe ich so angepasst;

Sub Excel_Termin_nach_Outloo8k_Ohne_Duplikate()
Dim wksSheet As Worksheet
Dim objFolder As Object
Dim objOutApp As Object
Dim objTermin As Object
Dim lngRow As Long
On Error GoTo Fin
Set wksSheet = ThisWorkbook.Worksheets("Tabelle3") ' Anpassen!!!
Set objOutApp = CreateObject("Outlook.Application")
'9 = olFolderCalendar
'Set objFolder = objOutApp.GetNamespace("MAPI").GetDefaultFolder(9)
'Set objFolder = objOutApp.GetNamespace("MAPI").PickFolder
'MsgBox objFolder.FolderPath
'Set objFolder = objOutApp.GetNamespace("MAPI"). _
Folders("mustername@muster.de").Folders("Kalender").Folders("nur dieser Computer"). _
Folders("Schulung")
'habe auch so probiert:Folders("Persönliche Ordner").Folders("Kalender").Folders("nur dieser  _
Computer").Folders("Schulung")
For lngRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row 'ab Zeile 2, Spalte A
If Not fncPointExist(objFolder, wksSheet.Cells(lngRow, 2).Value) Then
Set objTermin = objOutApp.CreateItem(1)
With objTermin
.AllDayEvent = True
.Start = Format(wksSheet.Cells(lngRow, 1).Value _
+ 0, "dd.mm.yyyy") '& " 08:00"
.Subject = wksSheet.Cells(lngRow, 2).Value
.Save
End With
Set objTermin = Nothing
End If
Next lngRow
Fin:
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & " " & Err.Description
Set objFolder = Nothing
Set objTermin = Nothing
Set objOutApp = Nothing
If Err.Number = 0 Then MsgBox "Termine nach Outlook übertragen!"
End Sub
Private Function fncPointExist(ByVal objTMP As Object, _
ByVal strSubject As String) As Boolean
Dim objItem As Object
For Each objItem In objTMP.Items
If objItem.Subject = strSubject Then fncPointExist = True
Next
End Function
Dann kommt die Fehler Meldung:-2147221233 Der versuchte Vorgang konnte nicht ausgeführt werden. Ein Objekt wurde nicht gefunden.
Wie findet man den fehelenden Objekt Bernd? Wie könnte man den dazu einbauen?
Wieso kann der Makro nicht auch durch PickFolder die Termine("fncPointExist") nicht abfragen?
Für jeden Rat o. Hilfe Danke ich im Voraus.
LG
Daniel

Anzeige
AW: Excel Termine nach Outlook ohne Duplikate
30.04.2014 14:37:00
bst
Hi,
Wenn nach dem PickFolder die MsgBox:
\\mustername@muster.de\Kalender(nur dieser Computer)\Schulung
liefert brauchst Du M.E.:
Set objFolder = objOutApp.GetNamespace("MAPI").Folders("mustername@muster.de").Folders("Kalender (nur dieser Computer)").Folders("Schulung")
Und, fncPointExist übergibst Du ja genau diesen Ordner als Parameter. Darin werden dann alle Objekte durchsucht ob bei einem davon das (ebenfalls übergebene) Subject übersinstimmt.
HTH, Bernd

AW: Excel Termine nach Outlook ohne Duplikate
01.05.2014 23:50:55
Becker
Hallo Bernd,
Danke für Deine Hilfe. Bin immer leider noch verzweifelt.
Vielleich könntest Du mir bitte weiter helfen.
Wenn ich das anwende:

Set objFolder = objOutApp.GetNamespace("MAPI"). _
Folders("mustername@muster.de"). _
Folders("Kalender (nur dieser Computer)").Folders("Schulung")
..dann bekomme ich den
Fehler :-2147221233 Der versuchte Vorgang konnte nicht ausgeführt werden. Ein Objekt wurde nicht gefunden.
Wenn ich das anwende:

Set objFolder = objOutApp.GetNamespace("MAPI").PickFolder
MsgBox objFolder.FolderPath
Dann wähle ich den gewünschten Kalender "Schulung" aber leider landen alle Termine IMMER ins "Private Kalender(nur dieser Computer)" gewünscht wäre Kalender "Schulung".
Trotz den Auswahl aus (PickFolder) finde ich immer die Termine in den "Private Kalender (nur dieser Computer)".
Was ist dran falsch?
MsgBox ist super Vorschlag.
Aus MsgBox "\\mustername@muster.de\Kalender(nur dieser Computer)\Schulung"
kann ich richtig ablesen wo sich der Kalender befindet.
Den vordefinierten Kalender (Schulung) wollte ich sehr gerne in Schleife einbauen.
Leider ohne Erfolg bei mir.
Probiert habe ich:
1.Set objFolder = objOutApp.GetNamespace("MAPI"). _
Folders("mustername@muster.de").Folders("Kalender").Folders("nur dieser Computer"). _
Folders("Schulung")
2.Set objFolder = objOutApp.GetNamespace("MAPI"). _
Folders("Persönliche Ordner").Folders("Kalender").Folders("nur dieser _
Computer").Folders("Schulung")
Aber da haut er mir jedes mal Fehler:
"-2147221233 Der versuchte Vorgang konnte nicht ausgeführt werden. Ein Objekt wurde nicht gefunden".
Woran liegt das? An Outlook Version 2013?
Und bis diesen Punkt (das die Termine nicht doppelt übertragen werden) "fncPointExist übergibst Du ja genau diesen Ordner als Parameter" bin noch nicht angekommen.
Ich lade die Mappe hoch:
https://www.herber.de/bbs/user/90432.xls
Vielleicht Bernd kannst Du mal was anderes entdecken.
Dein Vorschlag ist sehr gut aber es fehlte mir leider an Wissen um den selber anzuwenden.
Für jede Hilfe bin ich Euch sehr Dankbar.
LG
Daniel

Anzeige
AW: Excel Termine nach Outlook ohne Duplikate
05.05.2014 08:57:39
bst
Morgen,
schau mal nach ob das Leerzeichen nach Kalender dort auch hingehört:
Folders("Kalender (nur dieser Computer)")
Und, nimm anstatt von:
Set objTermin = objOutApp.CreateItem(1)
besser mal auch noch:
Set objTermin = objFolder.Items.Add
HTH, Bernd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige