bgervais
Goto Top

Importieren von excel daten in outlook vba

Hallo,

mein Deutsch ist nicht so gut, aber ich versuche es trotzdem. (Excel und Outlook - Deutsch Sprache)

ich würde gerne mit VB Skript Datei von meinem Excel 2013 Sheet > TextTabelle Blatt in Outlook 2013 importieren. Es geht nicht mit dem Importieren/Exportieren Funktion in Outlook deswegen muss ich mit VB probieren. Beigefügt ist ein Screenshot was ich von Excel in Outlook importieren möchte. (Blau Markiert)

Vielen Dank im Voraus!

Bryan
import

Content-Key: 306429

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

Ausgedruckt am: 19.03.2024 um 05:03 Uhr

Mitglied: 129413
129413 07.06.2016 aktualisiert um 17:27:13 Uhr
Goto Top
Use the search face-wink
Mit Excel einen Termin in Outlook erzeugen

Gruß skybird
Mitglied: Bgervais
Bgervais 07.06.2016 aktualisiert um 18:09:40 Uhr
Goto Top
Genau das habe ich erstmals im Internet gefunden und habe es versucht. Leider mache ich irgendwas falsch deswegen habe ich in diesem Site registriert und meine Frage eingereicht. Ich dachte das vielleicht jemand könnte es zu meinem Excel sheet anpassen.

Grüß,
Bryan
Mitglied: 129413
129413 07.06.2016 aktualisiert um 18:50:31 Uhr
Goto Top
Leider mache ich irgendwas falsch
Können wir hier leider nicht sehen was du angepasst hast...
Ich dachte das vielleicht jemand könnte es zu meinem Excel sheet anpassen.
Also deine Arbeit hier quasi machen lassen? Sportlich ...

Eigentlich sind nur Zeilen 13 - 19 an deine Spalten anzupassen.
Die Offsets beziehen sich so wie ich das jetzt auf den ersten Blick sehe auf Spalte A, d.h wenn man z.B. Spalte C ansprechen will macht man einen Offset von 2 bei D = 3 usw.
Ich sehe da kein Problem.

Poste deine Fehlermeldungen dann kann man dir helfen...
Mitglied: em-pie
em-pie 07.06.2016 um 19:52:43 Uhr
Goto Top
Hi,

wenn es nicht unbedingt VB sein muss:
erstelle dir in einem neuen Tabellenblatt die Struktur einer ics Datei.
Willst du mehrere Termine in einer Datei haben, dann schau hier:
http://www.office-loesung.de/ftopic352093_0_0_asc.php

Nach jedem Feld solltest du ein CRLF einbauen.
Tipps hierzu erhälst du hier:
http://windowssecrets.com/forums/showthread.php/30927-Insert-CR-LF-In-T ...

Am Ende alle per Copy&Paste in eine TExtdatei und als *.ics speichern und via Outlook importieren.

Das ist aber nur sinnvoll, wenn es eine Einmal-Aktion ist.
Sollen das häufiger laufen, wäre eine Makro-Variante die bessere.

Gruß
em-pie

P.S.
Zugegeben: nicht elegenat, aber funktional
Mitglied: Bgervais
Bgervais 08.06.2016 um 09:59:22 Uhr
Goto Top
Ich muss zugeben, ich habe nur ein paar Tage mit VB gearbeitet. Ich habe gedacht es wäre nicht so kompliziert, face-wink
Vielen Dank für dein Geduld!
Also, beigefügt ist der erste Fehler. Eigentlich kommen 31 Fehlern eine nach dem andern bis zu Ende, dann kommt "0 Termin(e) wurde erstellt".

Hier ist die angepasste VB code:

Sub createAppointments()

On Error Resume Next

Dim sheet As Worksheet, rngStart As Range, rngEnd As Range, cell 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)

counter = 0

For Each cell In sheet.Range(rngStart, rngEnd)

Set olApp = objCal.Items.Add(1)

With olApp

strSubject = cell.Text

strTitel = cell.Offset(0, 3).Text

strDescription = cell.Offset(0, 6).Text

strStartDate = cell.Offset(0, 7).Text

strEndDate = cell.Offset(0, 8).Text

strStartTime = cell.Offset(0, 9).Text

strEndTime = cell.Offset(0, 10).Text


.Subject = strSubject

.ReminderSet = False

If strCategory <> "" Then

.Categories = strCategory

End If

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
error3
Mitglied: Bgervais
Bgervais 08.06.2016 um 10:09:02 Uhr
Goto Top
Hi, vielen Dank für dein Vorschlag. Leider muss das Aktion häufig laufen. Gruß, Bryan
Mitglied: 129413
129413 08.06.2016 aktualisiert um 10:15:10 Uhr
Goto Top
Code-Tags!

strSubject = cell.Text
strTitel = cell.Offset(0, 3).Text
strDescription = cell.Offset(0, 6).Text
strStartDate = cell.Offset(0, 7).Text
strEndDate = cell.Offset(0, 8).Text
strStartTime = cell.Offset(0, 9).Text
strEndTime = cell.Offset(0, 10).Text
Kein wunder, du setzt die Offsets der Spalten falsch und als Datum einen Text X):
Der Offset muss hier immer eins kleiner sein als die Spaltennummer, warum, weil cell die Spalte A ist und ein Offset von 1 bedeutet Spalte B, bei Offset 2 = C und so weiter...ist doch logisch.

Einfach mal die Doku lesen, wozu gibts die denn sonst ?
Range.Offset-Eigenschaft (Excel)

Man muss kein Programmierprofi sein, als Anfänger muss man nur wissen wo man nachschlagen muss.
Mitglied: Bgervais
Bgervais 08.06.2016 aktualisiert um 12:38:53 Uhr
Goto Top
OK ich kriege es irgendwie hin, aber noch nicht. Immer noch die gleichen 31 Fehlern kommen.

besser?Code

strSubject = cell.Text
                         
            strTitel = cell.Offset(0, 2).Text
            
            strDescription = cell.Offset(0, 5).Text
            
            strStartDate = cell.Offset(0, 6).Value

            strEndDate = cell.Offset(0, 7).Value
            
            strStartTime = cell.Offset(0, 8).Value
          
            strEndTime = cell.Offset(0, 9).Value

"Übrigens, muss dieses Teil in dem Skript bleiben? Ich habe kein boolAllDay = cell.Offset(0, 5).Value in meine angepasste Skript"
Code

End If

            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  
Mitglied: 129413
Lösung 129413 08.06.2016 aktualisiert um 10:57:56 Uhr
Goto Top
Mitglied: Bgervais
Bgervais 08.06.2016 aktualisiert um 12:40:07 Uhr
Goto Top
Es das oben nun besser?

Gruß,
Bryan