Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1404to1408
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

Outlook Task mit VBA automatisieren

Outlook Task mit VBA automatisieren
29.01.2015 10:07:53
VBA_Beginner
Hallo zusammen
Ich nutze diese Seite um autodidaktisch VBA zu erlernen. Allerdings stehe ich ein klein wenig im Zeitdruck, da ich bis Ende Woche zwei Skripts fertig stellen muss.
Vielleicht bekomme ich durch euch Profis den richtigen Hinweis mein Skript zu vervollständigen.
Problem:
Ich muss bestimmte Datensätze in Excel mit Outlook automatisieren. In der Masterliste finden sich jeweils Datensätze, welche nach einer Gültigkeit abgefragt werden sollen. Dies funktioniert soweit gut, wenn die Zeile, welche in den Outlook-Task gezogen werden soll, die letzte Zeile in der Tabelle ist.
Ich konnte leider die Variablen nicht anders definieren als wie folgt:
Dim ID As Integer
Set ID = Range("A6").End(xlDown).Value
Wie schaffe ich es, dass mein Skript es versteht, wenn die Zelle z.B. K50
aktiv ist, dass dann A50 + B50 + C50 in den Task gezogen wird?
(Für K51, dann A51 + B51 + C51, usw.)
Besten Dank für jede Hilfe!
Liebe Grüsse
VBA_Beginner

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Outlook Task mit VBA automatisieren
29.01.2015 10:47:12
VBA_Beginner

Sub Zeilenbestimmung()
Dim i As Variant
Dim k As Long
Dim ID As String
ID = Cells(i, 1)
Dim Nr_OLD As Integer
Nr_OLD = Cells(i, 2)
Dim Nr_NEW As Integer
Nr_NEW = Cells(i, 3)
For i = 1 To 500
If ActiveCell.Columns(i, 3) = ActiveCell.Activate Then
Cells(i, 1 - 3) = k 'Hier habe ich Mühe den Syntax nachzuvollziehen
End If
'Outlook Assignment
NewTask.Assign = ID.Value & Nr_NEW.Value & ", " & Nr_OLD.Value
End Sub

AW: Outlook Task mit VBA automatisieren
29.01.2015 10:48:34
VBA_Beginner
Bitte um Support.
Liebe Grüsse
VBA_Beginner

AW: Outlook Task mit VBA automatisieren
29.01.2015 10:53:44
Klaus
Das kann nicht dein gesamter Code sein.
k ist dimensionert, aber nicht definiert
next i fehlt
ID ist ein String oder ein Range. Einen String spricht man nicht mit .value an, ein Range schon. In deinem Code ist es irgendwie beides.
Was soll "=ActiveCell.Activate" bewirken?
Ich habe auch mühe den Syntax nachzuvollziehen - geschweige denn eine grobe Idee zu bekommen was der Code machen soll. Vielleicht hilft eine Musterdatei?
Auf jedem Fall helfen wird es, hier im Forum einen Vornamen zu benutzen statt eines Pseudonyms. Oder möchtest du Hilfe von jemandem annehmen, der sich "Pokemon_Master_1337" nennt?
Grüße,
Klaus M.vdT.

Anzeige
AW: Outlook Task mit VBA automatisieren
29.01.2015 11:25:39
Allan
Hallo Klaus
Danke für deine Antwort und deinen Rat betreffend Name. Hier mein gesamter Code und Denkansatz:
Sub Schaltfläche4_Klicken()
UserForm1.Show
End Sub

Function GetTaskActions(NewTask As Outlook.TaskItem) As Outlook.Actions
Set GetTaskActions = NewTask.Actions
End Function

Sub Mail_to_PM_with_Outlook()
Dim objOLApp As Outlook.Application
Dim NewTask As Outlook.TaskItem
Dim Acts As Outlook.Actions
Dim myDelegate As Outlook.Recipient
Dim Editor As String
Editor = Range("J6").End(xlDown).Value
Dim Process_OLD As Variant
Process_OLD = Range("B6").End(xlDown).Value
Dim Process_NEW As Variant
Process_NEW = Range("C6").End(xlDown).Value
Dim Status As String
Status = Range("K6").End(xlDown).Value
Set objOLApp = CreateObject("Outlook.Application")
Set NewTask = objOLApp.CreateItemFromTemplate("[Template_Path]\Aufgabenvorlage.oft")
Set myDelegate = NewTask.Recipients.Add("user@domain") 'Empfänger E-Mail
Set Acts = GetTaskActions(NewTask)
'Send to Outlook Task Form
NewTask.StartDate = Now()
NewTask.Status = olTaskInProgress
NewTask.DueDate = Format(Now() + 3, "dd.mm.yyyy")
NewTask.Assign = Editor & ", " & Process_OLD & " / " & Process_NEW & " / " & Status
NewTask.Display
MsgBox "Prozess erfolgreich übertragen"
End Sub
'Der obengenannte Code funktioniert prima für die letzte Zeile in der Tabelle.. Ich möchte jetzt aber bewirken, dass
wenn ich auf Zelle D3 bin und mein Skript per Button auslöse, dass dann jeweils den Wert von der Zelle A3 + B3 + C3 verkettet
wird und dann im Titel-feld der Outlook-Task-Form gezogen wird. Siehe unten mein Denkansatz von heute Morgen.
Sub Zeilenbestimmung()
Dim i As Variant
Dim k As Long
Dim ID As String
ID = Cells(i, 1).Value
Dim Nr_OLD As Integer
Nr_OLD = Cells(i, 2).Value
Dim Nr_NEW As Integer
Nr_NEW = Cells(i, 3).Value
i = ActiveCell.Value
If Columns(i, 3) = ActiveCell.Select Then
Cells(i, "1:3").Value 'Hier habe ich Mühe den Syntax nachzuvollziehen
End If
'Outlook Assignment
NewTask.Assign = ID & ", " & Nr_NEW & " / " & Nr_OLD
End Sub

Anzeige
AW: Outlook Task mit VBA automatisieren
29.01.2015 11:38:00
Klaus
Hi Allan,
ich habe dir einen Zweig weiter unten bereits etwas geschrieben. Ist deine Frage damit beantwortet?
Grüße,
Klaus M.vdT.

AW: Outlook Task mit VBA automatisieren
29.01.2015 12:12:18
Allan
Hi Klaus
Super! Besten Dank. Nun macht es auch Sinn in meinen Kopf. Habe soeben deinen Code in meinen eingearbeitet und getestet. Funktioniert einwandfrei.
Beste Grüsse
Allan

Danke für die Rückmeldung! owT.
29.01.2015 12:22:08
Klaus
.

AW: Outlook Task mit VBA automatisieren
29.01.2015 11:01:47
Klaus
Hi,
Wie schaffe ich es, dass mein Skript es versteht, wenn die Zelle z.B. K50
aktiv ist, dass dann A50 + B50 + C50 in den Task gezogen wird?
(Für K51, dann A51 + B51 + C51, usw.)

im Prinzip so:
Sub Macro2()
Dim MyRow As Long
MyRow = ActiveCell.Row
MsgBox Range("A" & MyRow).Address & " - " & Range("B" & MyRow).Address & " - " & Range("C" &  _
MyRow).Address
End Sub

Auf deinen Codefetzen bezogen dann so:

Sub Macro2()
Dim MyRow As Long
MyRow = ActiveCell.Row
Dim ID As String
ID = Cells(MyRow, 1).Value
Dim Nr_OLD As Integer
Nr_OLD = Cells(MyRow, 2).Value
Dim Nr_NEW As Integer
Nr_NEW = Cells(MyRow, 3).Value

Die DIM's quasi "mitten im Code" zu haben halte ich für schlechten Stil. Gängige Konvention ist es, zuallererst alle DIMs am Codeanfang stehen zu haben bevor die erste echte Codezeile oder Zuweisung erfolgt:
Sub Macro2()
Dim MyRow As Long
Dim ID As String
Dim Nr_OLD As Integer, NR_NEW As Integer
MyRow = ActiveCell.Row
ID = Cells(MyRow, 1).Value
Nr_OLD = Cells(MyRow, 2).Value
NR_NEW = Cells(MyRow, 3).Value
aber das ändert nichts an der Funktionalität, von da her kannst du das halten wie der Pfarrer Nolte.
Grüße,
Klaus M.vdT.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige