133519
Goto Top

VBA: Excel Datum als Outlook Termin mit Knopfdruck (Datum wird falsch eingetragen)

Hallo Leute, ich habe eine Frage zu dem Themengebiet VBA Code. Ich habe mir ein Code ergoogelt der ein Excel Datum als Outlook Termin einträgt, diesen Code musste ich anpassen und nun Funktioniert er nicht mehr richtig:

PROBLEM: Egal welches Datum in der Excel Datei steht, er schreibt immer den 30. Dezember 1899 in Outlook. schalte ich die Zeile .Start = Format(Cells(4).Value, "dd.mm.yyyy") & " 09:00" mit einem ' aus, schreibt er das heutige Datum 12:00 Uhr.

Hat jemand eine Idee woran das liegen könnte. Ich selbst kenne mich mit VBA nicht aus, das ist mein erster Code den ich zu gesicht bekommen habe. Ich wäre sehr dankbar um Unterstützung von euch.

Der Code sieht folgendermaßen aus:
Sub terminINoutlook()
'
' Beispiel-Funktion - Markieren - und autoamtisch eintragen in Outlook
' 2016, www.stallwanger.net

'Declaration der Variablen
Dim StartDatum As Date
Dim Pruefer As String
'Dim Nachricht As String
'Dim Ort As String
Dim Beschreibung As String
'Dim Dauer As Long

'with: eine Reihe von Anweisungen für ein bestimmtes Objekt
With Excel.Selection

StartDatum = .Cells(4).Value 'Cells(1) weist die erste Spalte (mxn)
Pruefer = .Cells(5).Value
Beschreibung = .Cells(6).Value
'Dauer = .Cells(7).Value
'Nachricht = .Cells(4).Value
'Ort = .Cells(5).Value

End With

'Nach Outlook

lvOutlook StartDatum, Beschreibung, Pruefer


'
End Sub


Public Function lvOutlook(outDate As Date, outSubject As String, outBody As String) As Boolean 'boolean typ kann wahr oder falsch speichern

'Hier beginnen die Termine
Set OutApp = CreateObject("Outlook.Application")
Set apptOutApp = OutApp.CreateItem(1) 'olAppointmentItem)
With apptOutApp
'Datum und Uhrzeit - als Start-Uhrzeit 8:00 -
.Start = Format(Cells(4).Value, "dd.mm.yyyy") & " 09:00" ' Es kann auch eine andere Uhrzeit festgelegt werden.
'.Start = Format(outDate, "dd.mm.yyy") & " 09:00" ' Es kann auch eine andere Uhrzeit festgelegt werden.

'.Date = outDate

'Termininfo
.Subject = outSubject
'oder der Betreff steht in der Spalte rechts von den Terminen

' .Location = outlocation ' 'Ort

.Body = outBody '

'.Duration = outDauer ' 1 Std. = "60" Dauer in Minuten
'Erinnerung setzen in Outlook (hier inaktiv)
'
.ReminderPlaySound = True


'Erinnerung wiederholen
.ReminderSet = True

'Termin speichern
.Save
End With

Set apptOutApp = Nothing
Set OutApp = Nothing

'Debug.Print


lvOutlook = True
MsgBox "Termin an Outlook übertragen."

Exit Function

ErrOutLook:
Set apptOutApp = Nothing
Set OutApp = Nothing
lvOutlook = False
MsgBox "Termin konnte in Outlook nicht eingetragen werden. Fehler:" & Err.Description

End Function

Content-Key: 340507

Url: https://administrator.de/contentid/340507

Printed on: April 19, 2024 at 20:04 o'clock

Mitglied: 133417
133417 Jun 13, 2017 updated at 10:15:26 (UTC)
Goto Top
Wenn deine Zelle in Excel nicht im Datumsformat formatiert ist und sie als Text vorliegt musst du sie in ein Datum umwandeln:
.Start = CDate(Cells(4).Value)
Wenn die Zelle bereits Datumsformat (intern) hat dann reicht:
.Start = Cells(4).Value
Dazu auch mal hier reinschauen
Mit Excel einen Termin in Outlook erzeugen

Gruß
Mitglied: 133519
133519 Jun 13, 2017 at 11:30:40 (UTC)
Goto Top
Hallo BibersBaum,
danke für deine schnelle Antwort!
die Termine sind im Datumsformat. Schreibe ich den Code: .Start = Cells(4).Value, verwendet outlook das aktuelle Datum mit der aktuellen Uhrzeit.
Kannst du dir erklären warum? Ich habe versucht aus dem anderen Code (dein Link) schlau zu werden aber meine VBA Kenntnisse sind wirklich nicht gut.

Liebe Grüße
Mitglied: 133519
133519 Jun 13, 2017 at 11:33:53 (UTC)
Goto Top
Ich habs trotzdem auch mit der Zeile .Start = CDate(Cells(4).Value versucht, dann wird das Datum 30 Dezember 1899 verwendet.
Mitglied: 133417
133417 Jun 13, 2017 updated at 11:37:23 (UTC)
Goto Top
Zeilen 28/29 ...
Enddatum angeben und Datum richtig formatieren und umwandeln. Du machst es einfach falsch.
Du verweist sicher mit Cells(4).Value auf die falsche Zelle!
meine VBA Kenntnisse sind wirklich nicht gut.
Dann:
Mitglied: 133519
133519 Jun 13, 2017 at 13:45:22 (UTC)
Goto Top
Das kann evtl. auch sein. Ich versuche das Datum in 4. Spalte "nächste Prüfung" des markierten Bereichs zu verwenden. (s. Screenshot)
Könntest du mir nochmal genau sagen wo du das Problem siehst? Ich denk den kritischen Ausschnitt hab ich rauskopiert.
With Excel.Selection
    
    StartDatum = .Cells(4).Value 'Cells(1) weist die erste Spalte (mxn)  
     Pruefer = .Cells(5).Value
     Beschreibung = .Cells(6).Value
     'Dauer = .Cells(7).Value  
    'Nachricht = .Cells(4).Value  
    'Ort = .Cells(5).Value  
   
  End With
   
  'Nach Outlook  
   
   lvOutlook StartDatum, Beschreibung, Pruefer
   
 
'  
End Sub


Public Function lvOutlook(outDate As Date, outSubject As String, outBody As String) As Boolean 'boolean typ kann wahr oder falsch speichern  
 
'Hier beginnen die Termine  
    Set OutApp = CreateObject("Outlook.Application")  
    Set apptOutApp = OutApp.CreateItem(1) 'olAppointmentItem)  
    With apptOutApp
        'Datum und Uhrzeit - als Start-Uhrzeit 8:00 -  
        
        .Start = CDate(Cells(4).Value)
screenshot_tabelle
Mitglied: 133417
133417 Jun 14, 2017 updated at 13:34:27 (UTC)
Goto Top
Vollkommen durcheinander das ganze, du scheinst nicht zu verstehen was eine Function ist und wie diese mit Parametern arbeitet ....
With Excel.Selection
    StartDatum = Cells(.Row,6).Value
    Pruefer = Cells(.Row,7).Value
    Beschreibung = Cells(.Row,8).Value
    lvOutlook StartDatum, Beschreibung, Pruefer
End With
 

Public Function lvOutlook(outDate As Date, outSubject As String, outBody As String)
 
'Hier beginnen die Termine  
    Set OutApp = CreateObject("Outlook.Application")  
    Set apptOutApp = OutApp.CreateItem(1) 'olAppointmentItem)  
    With apptOutApp
        .Start = outDate
'....  
'..  
End Function
Mitglied: 133519
133519 Jun 21, 2017 at 07:31:42 (UTC)
Goto Top
Zitat von @133417:

du scheinst nicht zu verstehen was eine Function ist und wie diese mit Parametern arbeitet ....

Ja, wie gesagt, ich kenn mich mit VBA nicht aus und hab das Grundkonstrukt ergoogelt. Ich hab dein Code eingefügt, jedoch funktioniert die Exceldatei leider trotzdem nicht. Ich hab wirklich keine Ahnung was ich jetzt noch verändern könnte :/

Hier nochmal die kompletten Datei:

Sub terminINoutlook()
'  
' Beispiel-Funktion - Markieren - und autoamtisch eintragen in Outlook  
' 2016, www.stallwanger.net  

'Declaration der Variablen  
   Dim StartDatum As Date
   Dim Pruefer As String
   'Dim Nachricht As String  
   'Dim Ort As String  
   Dim Beschreibung As String
   'Dim Dauer As Long  
   
 'with: eine Reihe von Anweisungen für ein bestimmtes Objekt  
   With Excel.Selection
    
    StartDatum = Cells(.Row, 6).Value 'Cells(1) weist die erste Spalte (mxn)  
     Pruefer = Cells(.Row, 7).Value
     Beschreibung = Cells(.Row, 8).Value
     lvOutlook StartDatum, Beschreibung, Pruefer
   
  End With
   

   
  
   
 
'  
End Sub


Public Function lvOutlook(outDate As Date, outSubject As String, outBody As String) As Boolean 'boolean typ kann wahr oder falsch speichern  
 
'Hier beginnen die Termine  
    Set OutApp = CreateObject("Outlook.Application")  
    Set apptOutApp = OutApp.CreateItem(1) 'olAppointmentItem)  
    With apptOutApp
        'Datum und Uhrzeit - als Start-Uhrzeit 8:00 -  
        
        .Start = outDate
        
        'Start = Cells(4).Value  
        '.Start = Format(Cells(4).Value, "dd.mm.yyyy") & " 09:00" ' Es kann auch eine andere Uhrzeit festgelegt werden.  
         '.Start = Format(outDate, "dd.mm.yyy") & " 09:00" ' Es kann auch eine andere Uhrzeit festgelegt werden.  
         
         '.Date = outDate  
         
        'Termininfo  
        .Subject = outSubject
        'oder der Betreff steht in der Spalte rechts von den Terminen  
        
      '  .Location = outlocation '         'Ort  
        
        .Body = outBody '  
         
       '.Duration = outDauer   ' 1 Std. = "60" Dauer in Minuten  
        'Erinnerung setzen in Outlook (hier inaktiv)  
      '  
        .ReminderPlaySound = True
         
        
       'Erinnerung wiederholen  
        .ReminderSet = True
         
        'Termin speichern  
        .Save
    End With
     
    Set apptOutApp = Nothing
    Set OutApp = Nothing
 
'Debug.Print  
 
 
    lvOutlook = True
    MsgBox "Termin an Outlook übertragen."  
      
Exit Function
 
ErrOutLook:
Set apptOutApp = Nothing
Set OutApp = Nothing
lvOutlook = False
MsgBox "Termin konnte in Outlook nicht eingetragen werden.  Fehler:" & Err.Description  
 
End Function

anbei ein Screenshot von der Datei.

Könntest du mir nochmal helfen und mir sagen was ich noch ausprobieren könnte? Das wäre sehr nett.
Vielen Dank im Voraus
exceltabelle
Mitglied: 133417
133417 Jun 21, 2017 at 07:36:21 (UTC)
Goto Top
Hier steht alles was du wissen musst
Mit Excel einen Termin in Outlook erzeugen

VBA beibringen werden wir dir hier sicherlich nicht, dafür musst du schon selber sorgen!
Mitglied: 133519
133519 Jun 21, 2017 at 07:45:30 (UTC)
Goto Top
Mit diesem Code passiet jetzt in Outlook nichts mehr. In Excel wird angezeigt das der Termin übertragen wurde aber in Outlook wird der Termin nicht übertragen (nicht mal mit dem falschen Datum)
Mitglied: 133417
133417 Jun 21, 2017 updated at 07:48:49 (UTC)
Goto Top
Tja, wundert mich ehrlich gesagt nicht wenn man nur Copy n' Paste macht und die Threads nicht liest und die Zellbezüge an das eigene Sheet anpasst ...!!
Mitglied: 133519
133519 Jun 21, 2017 at 07:48:27 (UTC)
Goto Top
Alles klar! Trotzdem danke für deine Hilfe, auch wenn die Verbesserungen die du vorgeschlagen hast nicht funktioniert haben. Du bist ja nicht der einzige im Forum der meinen Code anschauen kann. Vielleicht kann mir ja noch jemand anderes Helfen.

Ich schau mir den Link nochmal an, vielleicht bringts ja doch was.
Mitglied: 133417
133417 Jun 21, 2017, updated at Jun 23, 2017 at 10:10:27 (UTC)
Goto Top
Zitat von @133519:

Alles klar! Trotzdem danke für deine Hilfe, auch wenn die Verbesserungen die du vorgeschlagen hast nicht funktioniert haben.
Die funktionieren, aber wenn du die richtige Zeile des zu erstellenden Termins nicht markierst wird da eben nichts draus. Du scheinst ja keinerlei Ambitionen zu haben die Dinge überhaupt zu verstehen, was man daran sieht das du anscheinend den Code aus dem anderen Thread einfach nur rüberkopiert hast und die Zellbezüge nicht an dein Sheet und deine Umgebung angepasst hast, denn der Code aus dem anderen Thread funktioniert hier einwandfrei (getestet), also hast du es nur falsch umgesetzt, ganz einfach.
Mitglied: 133519
133519 Jun 23, 2017 at 08:05:58 (UTC)
Goto Top
Hallo BibersBaum,
hab das Problem jetzt gefunden... das ursprüngliche Sheet war auf meine meine Umgebung angepasst, gab wohl ein Problem mit meinem Outlook. D.h. das Makro funktioniert bei meinen Kollegen perfekt, bei mir leider nicht. Muss es aber auch nicht da es für meine Kollegen war.

Obwohl mich deine arrogante Art schon ganz schön nervt, bin ich nicht hier um mich in irgendeinem Forum mit irgendwelchen Fremden zu streiten.


Das Makro funktioniert. Ich bin zufrieden!
LG