Microsoft Excel

Herbers Excel/VBA-Archiv

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

Termingenerierung Problem mit .Recipients.Add

Betrifft: Termingenerierung Problem mit .Recipients.Add von: Florin
Geschrieben am: 22.10.2014 06:16:47

Moin Leute,

ich bin absoluter VBA-Neueinsteiger und habe ein Problem, welches ich leider nicht verstehe. Ich habe mir einen VBA-Code geschrieben, mit dem ich aus einer Excel Tabelle heraus Kalendareinträge erstelle und diese an verschiedene Mitarbeiter versende. Es klappt auch alles, abgesehen von dem Teil mit dem versenden...

Hier einmal der Code:

Public Sub terminegenerieren()
 Dim TerminText As String
 Dim OutApp As Object, apptOutApp As Object
 Dim Spalte, SpalteN As Variant
 Dim objRecipient As Outlook.Recipient
 Dim b, x As Integer
 Range("B2").Select
 'Do Until ActiveCell.Value = "Stop"
 Set OutApp = CreateObject("Outlook.Application")
 Set apptOutApp = OutApp.CreateItem(1) 'olAppointmentItem)
 Set objRecipient = Nothing
 With apptOutApp
 .BusyStatus = 0
 .Start = Format(ActiveCell.Value, "dd.mm.yyyy") & " 08:00"
 .Subject = ActiveCell.Offset(0, 1)
 .Recipients.Add "test@testing.de"
 .Body = "Hier steht ein Text."
 .Location = "Büro"
 .Duration = "60"
 .ReminderMinutesBeforeStart = 10
 .ReminderSet = True
 .ResponseRequested = True
 .Send
 .Save
 ActiveCell.Offset(0, 4) = .EntryID
 End With
 ActiveCell.Offset(1, 0).Select
 Set apptOutApp = Nothing
 Set OutApp = Nothing
 'Loop
 MsgBox "Termin an Outlook übertragen!"
 End Sub


Vielen Dank schon einmal im Vorraus!

Gruß

Florin

  

Betrifft: .MeetingStatus = 1 fehlt oT. von: Tino
Geschrieben am: 22.10.2014 10:57:05




  

Betrifft: AW: .MeetingStatus = 1 fehlt oT. von: Florin
Geschrieben am: 22.10.2014 14:24:41

Vielen vielen Dank für den Tipp!, Termin wird jetzt verschickt. Ich habe jetzt leider direkt das nächste Problem. Ich speichere ja die EntryID, da ich die Termine im Anschluss wieder löschen können muss. Auch hierfür habe ich bereits ein (halb) funktionierendes Skript:

Public Sub deletetest()

Dim objAppointment As Object
Dim CalEntryID As Variant
Set objOutlook = New Outlook.Application

CalEntryID = Range("F2")

Set objAppointment = objOutlook.Session.GetItemFromID(CalEntryID)

objAppointment.Delete

End Sub


Leider lösche ich hiermit nur den Termin aus meinem Outlook und nicht aus dem der anderen Teilnehmer...
Ich bin über jeden Tipp sehr dankbar...

Gruß

Florin


  

Betrifft: AW: .MeetingStatus = 1 fehlt oT. von: Tino
Geschrieben am: 22.10.2014 15:27:05

Hallo,
versuch es mal so.

Public Sub deletetest()
Dim objAppointment As Object
Dim objOutlook As Object
Dim CalEntryID As Variant

Set objOutlook = CreateObject("Outlook.Application")

CalEntryID = Range("F2")

Set objAppointment = objOutlook.Session.GetItemFromID(CalEntryID)

objAppointment.MeetingStatus = 5 'olMeetingCanceled
objAppointment.Send
objAppointment.Delete


End Sub
Gruß Tino


  

Betrifft: AW: .MeetingStatus = 1 fehlt oT. von: Florin
Geschrieben am: 27.10.2014 08:34:13

Moin Tino,

vielen Dank noch einmal für deine Hilfe! Also der Termin wird jetzt bei dem Nutzer als "abgesagt" angezeigt. Das reicht erstmal. Ich habe nun noch das Problem, dass ich den Termin immer nur einer Person schicken kann. Geht das auch anders? Mein Wunsch wäre, wenn man es so lösen könnte:

Dim OutApp As Object, apptOutApp As Object
Dim Spalte, SpalteN As Variant
Dim objRecipient As Outlook.Recipient
Dim b, x As Integer
Range("B2").Select
'Wählt Spalte B, Zeile 2 aus
Do Until ActiveCell.Value = "Stop"
'Do Schleif, bis die ausgewählte Zelle "Stop" ist
Set OutApp = CreateObject("Outlook.Application")
'Legt ein Outlook-Objekt an
Set apptOutApp = OutApp.CreateItem(1)
'Legt ein "Appointmentitem"-Objekt an
With apptOutApp
.BusyStatus = olFree
'Termin-Status
.MeetingStatus = 1
.Start = Format(ActiveCell.Value, "dd.mm.yyyy") & " 08:00"
'Startzeitpunkt des Termins (Ausgewählte Zelle gibt das Datum an)
.Subject = ActiveCell.Offset(0, 1)
'Betreff des Termins (Ausgewählte Zelle + 1)
.Recipients.Add = ActiveCell.Offset(0, 2)
'Gibt weitere Empfänger/Teilnehmer des Termins an
.Body = "Hier steht ein Text."
'Inhalt des Termins
.Location = "Büro"
'Ort des Termins
.Duration = "60"
'Dauer des Termins
.ReminderMinutesBeforeStart = 10
'Erringerung vor dem Termin
.ReminderSet = True
'Errinerung aktiviert
.ResponseRequested = True
'Antwort auf den Termin benötigt
.Send
'Sendet den Termin an den Empfänger
.Save
'Speichert die EntryID des Termins
ActiveCell.Offset(0, 4) = .EntryID
'Schreibt die EntryID in die gewählte Zelle + 4
End With
ActiveCell.Offset(1, 0).Select
'Ausgewählte Zelle springt eine Zeile weiter
Set apptOutApp = Nothing
Set OutApp = Nothing
'Variablen werden geleert
Loop
'Do Schleif, bis die ausgewählte Zelle "Stop" ist
MsgBox "Termin an Outlook übertragen!"
'Meldung für den Excel-User
End Sub


Das funktioniert leider nicht, ich bekomme folgende Fehlermeldung: "Argument ist nicht optional"

Wäre super wenn du auch hier eine Lösung hättest.

Vielen Dank im Vorraus.

Gruß

Florin


 

Beiträge aus den Excel-Beispielen zum Thema "Termingenerierung Problem mit .Recipients.Add"