cement
Goto Top

Makros im Outlook

Moin Leute,

ich habe einen SBS2003 inkl. Outlook2003.

Ich hoffe, mir kann jemand bei der Erstellung von Makros behilflich sein.

Folgendes möchte ich erreichen:

Ich brauche eine Schaltfläche auf einem Kontakt-Formular (z.B. mit der Bezeichnung "Neue Buchung")
Wenn darauf geklickt wird, dann soll folgendes passieren:

1.) Es wird eine neue Aufgabe im Ordner "Kunden Buchungen" angelegt
2.) In dieser Aufgabe ist automatisch das Feld "Kontakt" gefüllt mit dem Kontakt-Namen des gerade aktiven Kontakts.

Was habe ich bereits?
- Angepasstes Kontakt-Formular mit der (noch nutzlosen) Schaltfläche "Neue Buchung"
- Verlinkung der "Aktivitäten" zum Ordner "Kunden Buchungen"
- Angepasstes Aufgaben-Formular (enthält u.a. das Feld "Kontakt"

Was möchte ich erreichen?
- Zu den Kunden-Kontakten sollen alle entsprechenden Buchungen verknüpft werden können
- So kann man jederzeit sehen, welche Aufträge für den Kunden erfüllt wurden und z.B. wie hoch die Schlußrechnungs-Summe war
- Im zweiten Schritt soll dann noch ein Ausdruck möglich sein, der nach verschieden Kriterien sortiert/gefiltert wird. (aber dazu später mehr).

Was fehlt?
Nun brauche ich ein Makro, was beim Klicken auf die Schaltfläche "Neue Buchung" die oben genannten Funktionen ausführt

Vielen Dank schon mal für Eure Hilfe,

Gruß CeMeNt

Content-ID: 107472

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

Ausgedruckt am: 16.12.2024 um 18:12 Uhr

Trax83
Trax83 30.01.2009 um 12:11:00 Uhr
Goto Top
HI CeMeNt,

ich find das ist wie mit allem: Vorkauen werd ich dir aber nicht alles face-smile


Also im Kontaktformular folgenden VBScript einfügen (wer Fehler findet, darf sie behalten):

Sub CommandButton1_Click()
Set FolderAufgaben = Application.Session.Folders.Item("Öffentliche Ordner").Folders("Alle öffentlichen Ordner").Folders("Kunden Buchungen")
Set Aufgabe = FolderAufgaben.Items.ADD
Aufgabe.ItemProperties.Item("Kontakt").value = FullName 'Ich würde aber lieber die EntryID des Kontakts eintragen, besser zu identifizieren
Aufgabe.Save
End Sub


hoffe, damit konnte man dir weiter helfen.


Mfg
Trax
CeMeNt
CeMeNt 30.01.2009 um 14:26:40 Uhr
Goto Top
Moin Trax83,

heute hatte ich leider keine Zeit, Dein Makro zu testen.

Sieht aber (so weit ich das beurteilen kann/darf) schon echt super aus.

Keine Angst, ich will ja gar nicht alles vorgekaut bekommen.
Aber mal sehen, wie weit ich damit schon kommen werde.

Vielen Dank schon mal, und ein schönes Wochenende

CeMeNt
Trax83
Trax83 30.01.2009 um 17:31:13 Uhr
Goto Top
Würde dir wie oben bereits geschrieben, aber vorschlagen, im Aufgabenelement nicht den Namen des Kontakts, sondern die EntryID einzutragen....

Dann würde ich im Aufgabenformular:

Function Item_Open()
Set MyPage = Item.GetInspector.ModifiedFormPages("S.2")
MyPage.TextBox1.Text = Application.Session.GetItemFromID(ItemProperties.Item("Kontakt").value).FullName
MyPage = Nothing
End Function


Auch bei gleichem Namen, wird die Aufgabe sicher nur dem einem Kontakt zugeordnet.
CeMeNt
CeMeNt 03.02.2009 um 17:33:54 Uhr
Goto Top
Moin Trax,

hmmm, vielleicht bräuchte ich die Häppchen doch noch etwas kleiner... face-smile

Wenn ich die "Funktion Item_Open()"-Geschichte ins Aufgabenformulat einfüge, so kommt beim Öffnen einer Aufgabe eine Fehlermeldung:

Zeile 3:

Laufzeitfehler im Microsoft VBScript: Objekt erforderlich: 'ItemProperties.Item(...)'


Deinen ersten Vorschlag habe ich ins Kontakt-Formular eingefügt.
Aber es passiert weiterhin nichts, wenn ich auf meine Schaltfläche drücke.

Vielleicht noch einmal genauer, was ich erreichen möchte:

Wenn man auf einem beliebigen Kontakt rechtsklickt, dann gibt es im Kontextmenü den Punkt
"Neue Aufgabe für den Kontakt"

Das Problem dabei ist, dass diese Aufgabe aber immer im persönlichen Ordner landet.

Ich möchte nun per Schaltfläche im Kontakt-Formular erreichen, dass genau so eine neue Aufgabe erzeugt wird, nur dass diese eben automatisch in einem öffentlichen Ordner gespeichert wird.

Wäre super, wenn Du noch mal einen Tipp für mich hättest.

Danke, Gruß CeMeNt
Trax83
Trax83 04.02.2009 um 07:27:18 Uhr
Goto Top
Morgen CeMeNt,

also hab mir das gerade auch nochmal erst ansehen müssen.....

wie ich das sehe, gibs da grds zwei möglichkeiten für dich das zu realisieren...

1. Du nutzt die bereits im AppointmentItem vorhandene Eigenschaft "Links". Das Standardformular von Aufgaben hat ja bereits ein Feld "Kontakte", dann brauchst du nur im benutzerdefinierten Kontaktformular einen Button einfügen mit (Code nur z.B. keine Ahnung ob der so läuft, mit Appointment hab ich ehrlich gesagt noch nie was machen müssen):
Sub CommandButton1_Click()
  Set FolderAufgaben = Application.Session.Folders.Item("Öffentliche Ordner").Folders("Alle öffentlichen Ordner").Folders("Kunden Buchungen")
  Set Aufgabe = FolderAufgaben.Items.Add
  Aufgabe.Links.Add(Application.Session.GetItemFromID(EntryID))
  ' Aufgabe.Save
  Aufgabe.Display
End Sub


2. oder du machst es wie bereits oben beschrieben. Fehlermeldung ist klar, da in einem Normalen AppointmentItem ja auch kein benutzerdefiniertes Feld "Kontakt" vorhanden ist, welches du ja mit Formular ausführen erzeugst.... eine abfrage mit "if not isnothing" kann da helfen. Der Code oben sollte natürlich nur bei einem bereits durch das Kontaktformular erzeugten AufgabenObjekt funzen.


ich tendiere aber eher zu Variante 1... jetzt sollte Aufgabe mit Display auch angezeigt werden.

Mfg
Trax
CeMeNt
CeMeNt 04.02.2009 um 08:01:05 Uhr
Goto Top
Moin Trax!

Perfekt! Es funktioniert!

Ich habe nun den letzten Code (1.) in meinKontaktformular eingebaut.
Für die Aufgaben verwende ich bisher das ganz normale Standard-Formular.

Und nun funktioniert es genau so, wie ich es mir gedacht hatte!

Vielen Dank und einen schönen Tag noch!

Gruß CeMeNt