Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Makro: Terminübergabe von Excel nach Outlook

Frage Microsoft Microsoft Office

Mitglied: Tsunami87

Tsunami87 (Level 1) - Jetzt verbinden

06.02.2014, aktualisiert 10:40 Uhr, 4895 Aufrufe, 7 Kommentare, 1 Danke

Hallo liebe Gemeinde,

Aufgabenstellung war eine Lösung zu finden was Daten aus Excel in eine Outlookaufgabe schreibt.
Eine Lösung habe ich mir mit Office 2013 und dem Internet zusammengeschustert.

Meine Tabelle sieht grob so aus

A B C D E
Lieferant Art. No. Artikel Prod.Gruppe Datum

Mit diesemMakro funktioniert dies auch wunderbar.
01.
Option Explicit 
02.
 
03.
Sub AufgabenNachOutlook() 
04.
'Variablen deklarieren. 
05.
Dim appOutLook As Outlook.Application 
06.
Dim taskOutLook As Outlook.TaskItem 
07.
'Dim mydelegate As Outlook.Recipient 
08.
     
09.
    'Mit Zelle "E4" beginnen, In Spalte E steht das Datum 
10.
Range("E4").Select 
11.
 
12.
    'Wiederhole solange bis eine Zelle in Spalte H leer ist 
13.
Do Until ActiveCell.Value = "" 
14.
 
15.
    'Prüfen ob in Spalte 41 ein x ist, 
16.
    'dass bedeutet, dass der Termin schon einmal erfasst wurde 
17.
    'Wenn ein x vorhanden ist, dann zur Sprungmarke AufgabeDa gehen 
18.
 
19.
If ActiveCell.Offset(0, 36).Value = "x" Then GoTo AufgabeDa 
20.
 
21.
    'Verbindung zu Outlook herstellen. 
22.
Set appOutLook = CreateObject("Outlook.Application") 
23.
    'Ankündigen, dass eine Aufgabe erstellt werden soll. 
24.
Set taskOutLook = appOutLook.CreateItem(olTaskItem) 
25.
 
26.
    With taskOutLook 
27.
        'Set mydelegate = taskOutLook.Recipients.Add("mail@irgendwas.de") 
28.
        'Betreff einfügen. 
29.
        .Subject = "INDEX" & " " & ActiveCell.Offset(0, -1) 
30.
        'Text für die Aufgabe eintragen. 
31.
        .Body = ActiveCell.Offset(0, -3) & " / " & ActiveCell.Offset(0, -2) 
32.
        'Datum für den Beginn setzen. 
33.
        .StartDate = Format(ActiveCell.Value, "dd.mm.yyyy") 
34.
        'Erinnerungszeit setzen. 
35.
        .ReminderTime = Format(ActiveCell.Value - 21, "dd.mm.yyyy") & " " & "01:00" 
36.
        'Erinnerung einschalten. 
37.
        .ReminderSet = True 
38.
        'Aufgabe speichern. 
39.
        .Save 
40.
        'Aufgabe öffnen. 
41.
        .Display ' Wenn die Aufgaben nicht geöffnet werden sollen, dann einfach auskommentieren 
42.
 
43.
    End With 
44.
 
45.
    ' In die 41. Spalte ein x setzen heißt: 
46.
    ' der Termin wurde schon einmal in den Kalender eingetragen 
47.
    ' Deshalb den Code ab hier weiter abarbeiten 
48.
ActiveCell.Offset(0, 36).Value = "x" 
49.
 
50.
    'Sprungmarke 
51.
AufgabeDa: 
52.
 
53.
 
54.
    'Nächste Zeile der gleichen Spalte auswählen 
55.
ActiveCell.Offset(1, 0).Select 
56.
 
57.
    ' Verbindung zu Outlook trennen 
58.
Set taskOutLook = Nothing 
59.
Set appOutLook = Nothing 
60.
 
61.
'Nächster Schleifendurchlauf 
62.
Loop 
63.
 
64.
MsgBox "Alle Aufgaben wurden in Outlook eingetragen!" 
65.
 
66.
End Sub
Neue Aufgabe zu diesem Makro / Tabelle:
Prod.Gruppen mit selbem Datum zusammenfassen und die Artikelbeschreibungen in den Text der Aufgabe schreiben.
Bsp. Tabelle
A B C D E
Lieferant Art. No. Artikel Prod.Gruppe Datum
Hr. X 00615 Kette w Fahrrad 30.01.2014
Hr. X 00815 Kette y Fahrrad 30.01.2014
Hr. Y 00724 Helm y Fahrrad 28.02.2014
Hr. X 00915 Kette z Fahrrad 30.01.2014
Hr. Y 00624 Helm x Fahrrad 28.02.2014
Hr. Y 00824 Helm z Fahrrad 30.02.2014
Hr. X 00715 Kette x Fahrrad 30.01.2014

Bsp. Aufgabe im Outlook
01.
Betreff: Index Fahrrad 
02.
Fälligkeitsdatum: 30.01.2014 
03.
Erinnerung: 09.01.2014 
04.
Text: 00615 / Kette w     
05.
      00715 / Kette x            
06.
      00815 / Kette y 
07.
      00915 / Kette z 
08.
 
09.
Betreff: Index Fahrrad 
10.
Fälligkeitsdatum: 28.02.2014 
11.
Erinnerung: 07.01.2014 
12.
Text: 00624 / Helm x     
13.
      00724 / Helm y           
Wie kann ich dies am besten umsetzen? Wäre für jede Hilfe sehr dankbar.

Mit freundlichen Grüßen
Tsunami
Mitglied: colinardo
LÖSUNG 06.02.2014, aktualisiert 10.02.2014
Hallo Tsunami,
schau dir am besten dieses Demo-Sheet dazu an.
Es sortiert die Tabelle nach Datum und erstellt dann die Tasks gruppiert nacheinander.

Grüße Uwe
Bitte warten ..
Mitglied: Tsunami87
06.02.2014 um 12:20 Uhr
Hallo Uwe,

vielen Dank für deine Antwort.
Ich werde dies gleich einmal verbauen.

Grüße
René
Bitte warten ..
Mitglied: colinardo
06.02.2014, aktualisiert um 12:25 Uhr
Nur zur Info falls ein Fehler auftreten sollte ...darüber bin ich gestolpert:
In deinen Demo-Daten war ein 30.02.2014 vorhanden. Dieser Tag im Februar existiert aber nicht

Grüße Uwe
Bitte warten ..
Mitglied: Tsunami87
10.02.2014 um 06:53 Uhr
Morgen Uwe,

bitte Entschuldige die späte Rückantwort.

Das Makro sieht nun so aus:
01.
  
02.
Sub AufgabenNachOutlookGruppe() 
03.
 
04.
   Dim rngStart As Range, rngEnd As Range, cell As Range, sheet As Worksheet, taskOutlook As Variant 
05.
    Set appOutLook = CreateObject("Outlook.Application") 
06.
    Set sheet = Worksheets(2) 
07.
   Set rngStart = sheet.Range("A4") 
08.
    Set rngEnd = rngStart.End(xlDown) 
09.
     
10.
 
11.
 
12.
   sheet.Range(rngStart, rngEnd.Offset(0, 14)).Sort Key1:=Range("H3"), Order1:=xlAscending, Key2:=Range("E3"), Order2:=xlAscending 
13.
    prev_date = "" 
14.
    prev_group = "" 
15.
 
16.
    For Each cell In sheet.Range(rngStart, rngEnd) 
17.
 
18.
    If cell.Offset(0, 18).Value = "x" Then GoTo AufgabeDA 
19.
        art_date = cell.Offset(0, 7).Value 
20.
        art_group = cell.Offset(0, 4).Value 
21.
         
22.
        If prev_date = art_date And prev_group = art_group Then 
23.
            taskOutlook.Body = taskOutlook.Body & cell.Offset(0, 1).Value & " / " & cell.Offset(0, 3).Value & vbNewLine 
24.
     
25.
        Else 
26.
            Set taskOutlook = appOutLook.CreateItem(3) 
27.
            With taskOutlook 
28.
                'Betreff einfügen. 
29.
                .Subject = "INDEX " & cell.Offset(0, 4).Value 
30.
                'Text für die Aufgabe eintragen. 
31.
                .Body = cell.Offset(0, 1).Value & " / " & cell.Offset(0, 3).Value & vbNewLine 
32.
                'Datum für den Beginn setzen. 
33.
                .StartDate = DateValue(cell.Offset(0, 7).Value) 
34.
                'Erinnerungszeit setzen. 
35.
                .ReminderTime = DateAdd("d", -21, .StartDate) & " 01:00" 
36.
                'Erinnerung einschalten. 
37.
                .ReminderSet = True 
38.
                'Aufgabe speichern. 
39.
                '.Save 
40.
                'Aufgabe öffnen. 
41.
                .Display ' Wenn die Aufgaben nicht geöffnet werden sollen, dann einfach auskommentieren 
42.
            End With 
43.
           prev_date = art_date 
44.
           prev_group = art_group 
45.
        End If 
46.
cell.Offset(0, 18).Value = "x" 
47.
AufgabeDA: 
48.
    Next 
49.
    Set appOutLook = Nothing 
50.
End Sub
Funktioniert super, leider erhalte bei der letzten Zeile "Typen unverträglich" ist es möglich einen Befehl ähnlich
01.
Do Until ActiveCell.Value = ""
Grüße
René
Bitte warten ..
Mitglied: colinardo
10.02.2014 um 08:43 Uhr
Hallo René,
leider erhalte bei der letzten Zeile "Typen unverträglich"
das hilft jetzt nicht so wirklich, bei End Sub wird der Fehler sicher nicht liegen. Kenne deinen Tabelleninhalt jetzt nicht, aber der Code in Zeile 8 legt ja die Zelle fest in der als letztes ein Wert in Spalte A eingetragen ist. Wenn du eine andere Zelle auf vorhandensein eines Wertes prüfen willst kannt du das vor der Zeile 18 mit
if cell.Offset(0,4).Value <> "" then Exit For
machen (Offset an die zu überprüfende Zelle anpassen). Dann springt er aus der Schleife und beendet die Prozedur.
Hoffe das hilft die weiter.

Grüße Uwe
Bitte warten ..
Mitglied: Tsunami87
10.02.2014 um 09:56 Uhr
Hallo Uwe,

nicht ganz.
Ich glaube der fehler erscheint da keine Werte in der Spalte stehen.
Aber damit kann ich leben.

Vielleicht finde ich noch was

Vielen Dank.

Grüße
René
Bitte warten ..
Mitglied: colinardo
10.02.2014, aktualisiert um 10:05 Uhr
arbeite mit dem Debugging und Schritt-für-Schritt Ausführung (F8), setze Breakpoints und Variablenüberwachung in deinem Code, dann findest du den Übeltäter 100%.
Und den Sprung mit der Goto-Marke würde ich durch eine If-Abfrage ersetzen...

Grüße Uwe
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Microsoft Office
gelöst CSV-Datei mit einem VBA Makro in Excel einlesen und leicht anpassen (5)

Frage von JoSiBa zum Thema Microsoft Office ...

Microsoft Office
Aus Outlook 2013 Daten aus Tabellenfeldern in Excel übertragen (7)

Frage von ich2110 zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel 2010 Zellen mit bestimmten Inhalt mit Makro formartierten (5)

Frage von packmann2016 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...