PDA

Vollständige Version anzeigen : Termin Notizen mit Tabelle Fixiren


Muecke.1982
20.11.2017, 09:18
Hallo miteinander,

ich möchte in meine Termine einen in der Breite Fixierte Tabelle einbauen.

Warum ich das machen möchte, ich möchte mir einen Bericht erstellen nach jedem Termin.
Damit ich diesen auch immer richtig Drucken kann sollte die Breite der Tabelle Fixiert sein, sonst kann diese mal über das Blatt hinaus gehen was wiederum beim Ausdrucken schlecht wäre.

Wenn Sie sich nach unten anpasst (Höhe) habe ich damit kein Problem.

Ich habe die Tabelle erst ein mal in einen Leeren Termin gebaut um zu schauen wie das aussehen würde, später würde ich gerne diesen Termin Per Makro aus Outlook heraus erstellen lassen und gleich ein Paar Daten von einem Offenen Kontakt eintragen lassen.

Wenn ich das ganze über ein Makro mache dann kann ich doch HTML Elemente verwenden? kann man darin die Tabelle in der Breite Fixieren? so das diese nicht breiter oder Schmäler wird? wenn man was hinein schreibt?


gruß Mücke

markusxy
20.11.2017, 10:00
Eine kurze Web Suche, sollte dir Beispiele zeigen wie man HTML Tabellen erstellt.
Findet sich natürlich auf Seiten die sich mit HTML beschäftigen.

Muecke.1982
22.11.2017, 11:08
Eine kurze Web Suche, sollte dir Beispiele zeigen wie man HTML Tabellen erstellt.
Findet sich natürlich auf Seiten die sich mit HTML beschäftigen.
Wie eine HTML Tabelle im Code ausschauen muss das wies ich.
z.B. so:

table
colgroup
col width="80"
col width="100"
col width="320"
/colgroup
tr
td1. Zeile, 1. Spalte/td
td1. Zeile, 2. Spalte/td
td1. Zeile, 3. Spalte/td
/tr
/table

ich habe die Spitzen Klammern vor und Hinter den HTML Tag weg gelassen denn das Forum setzt die Tabelle direkt um. man sieht also den Code nicht mehr :-(.

Meine frage war, wie ich es verhindern kann das die Zellen Breiter werden wenn ich darin was schreibe, denn ich möchte dies ja als Vorlage nutzen und verhindern das wenn ich einen Bericht schreibe auf einmal meine Zelle Breiter werden kann wie vorgesehen.



Das andere ist das ich beim erstellen meines Termins den .body in .HTML.body ersetzen muss doch dann bekomme ich einen Fehlermeldung.

Fehlermeldung:
Laufzeitfehler '438':
Objekt unterstützt diese Eigenschaft oder Methode nicht

Ich muss noch irgend wo die Eingenschaft setzen das der Body auch HTML sein kann und darf, ich wies nur nicht wo :-(

Wenn ich die Zeile:
.BodyFormat = olFormatHTML
einfüge dann mag er die Zeile nicht. ;-( irgend wo muss ich doch sagen das HTML OK ist. doch wo?

Gruß Mücke


Das ist mein gerammtes Test CODE:

Sub Test_Termin_mit_HTML()

Dim ai As Outlook.AppointmentItem
Dim ciTemp As Outlook.ContactItem

Set ai = Application.CreateItem(olAppointmentItem) ' Erstelle einen neuen Termin
With ai ' weise dem Termin Eigenschaften des Kontakts zu...
.Start = Now ' Termin Datum (Date = Das Heutige Datum // Now = Datum heute & Urzeit Aktuell)
.Subject = "Betreff ..." ' Betrefzeile
.Location = "Adresse ..." ' Adresse vom termin
.Duration = "120" ' Dauer des Termins in Minuten
.BodyFormat = olFormatHTML
.HTMLBody = "<table>" & _
" <colgroup>" & _
" <col width=80>" & _
" <col width=100>" & _
" <col width=320>" & _
" </colgroup>" & _
" <tr>" & _
" <td>1. Zeile, 1. Spalte</td>" & _
" <td>1. Zeile, 2. Spalte</td>" & _
" <td>1. Zeile, 3. Spalte</td>" & _
" </tr>" & _
"</table>"
.Display ' Termin anzeigen
End With
Set ciTemp = Nothing ' Zurücksetzen der Variablem
Set ai = Nothing ' Zurücksetzen der Variablem
End Sub

der gesamte Code stammt aus einen etwas Komplexeren Code, bei dem ich auch noch Prüfe ob ein Kontakt offen ist wenn ja dann sollen die Kontaktdaten auch gelesen werden denn die sollen Später zum teil schon in den Termin mit eingearbeitet werden, das ich weniger zu tun habe.
Das hat auch alle geklappt, nur die Idee mit dem HTML klappt bisher nicht.

da das mit dem Offenen Kontakt etwas Mühsam ist, habe ich den teil mit dem Termin erstellen raus gelöst um zu schauen wie das mit dem HTML Block ist.


Bis auf die ziele "BodyFormat " und das HTMLBody ist eigentlich bisher immer ein .body gewesen.

markusxy
22.11.2017, 14:58
wie ich es verhindern kann das die Zellen Breiter werden wenn ich darin was schreibe

Bei mir wird die Zeile nur breiter, wenn ein einzelnes Wort breiter als die Spalte ist, ansonsten gibts einen Zeilenumbruch. Da sehe ich kein Problem.


Wenn ich die Zeile:
.BodyFormat = olFormatHTML
einfüge dann mag er die Zeile nicht.

Bei mir gibts fürs AppointmentItem keine BodyFormat Eigenschaft, bei dir schon?

LG M

Muecke.1982
22.11.2017, 15:32
Bei mir wird die Zeile nur breiter, wenn ein einzelnes Wort breiter als die Spalte ist, ansonsten gibts einen Zeilenumbruch. Da sehe ich kein Problem.

Das wäre genau das was ich hin bekommen möchte, doch bei mir wir die Zeile immer breiter, egal was ich mache, einen Zeilenumbruch muss ich Beiwust mit "CR" einleiten.


Bei mir gibts fürs AppointmentItem keine BodyFormat Eigenschaft, bei dir schon?

LG M
Wie führst du dann den HTML Code ein? so das er im Body nicht als Code sondern als Tabelle dargestellt wird?
ich bekomme das nicht hin :-(

CODE:
Option Explicit

Sub Test_Termin_mit_HTML()

Dim ai As Outlook.AppointmentItem
Dim ciTemp As Outlook.ContactItem

Set ai = Application.CreateItem(olAppointmentItem)
With ai
.Start = Now
.Subject = "Betreff ..."
.Location = "Adresse ..."
.Duration = "120"
.Body = "< b > Das ist FET Geschriben < /b >"
.Display
End With
Set ciTemp = Nothing
Set ai = Nothing
End Sub
Die Leerzeichen vor und hinter dem < > sind nur für die Darstellung hier im Forum eingefügt worden !
DIE HTML zeichne sind im Body als Text zu sehen.

CODE:
Option Explicit

Sub Test_Termin_mit_HTML()

Dim ai As Outlook.AppointmentItem
Dim ciTemp As Outlook.ContactItem

Set ai = Application.CreateItem(olAppointmentItem)
With ai
.Start = Now
.Subject = "Betreff ..."
.Location = "Adresse ..."
.Duration = "120"
.HTMLBody = "< b > Das ist FET Geschriben < /b >"
.Display
End With
Set ciTemp = Nothing
Set ai = Nothing
End Sub
Gibt die Fehlermeldung aus:
Laufzeitfehler '438':
Objekt unterstützt diese Eigenschaft oder Methode nicht

Wie machst du das das der HTML Code auch wirklich im Body umgesetzt wird?


Gruß Mücke

markusxy
22.11.2017, 15:56
.HTMLBody = "< b > Das ist FET Geschriben < /b >"


Man kann halt nur Eigenschaften nutzen die es gibt. Der Compiler schreit doch, bei Verwendung unbekannter Eigenschaften.

Ein Blick in den Objektkatalog/Hilfe und oder Intellisens zeigen die möglichen Eigenschaften.

Ich führe die Tabelle einfach händisch ein. Für eine Vorlage genügt das doch.
Bis heute habe ich nur bei Mails per VBA den Body genutzt, daher ist mir das auch erst jetzt aufgefallen.

LG M

Muecke.1982
22.11.2017, 16:18
hmm, gut man kann also keinen HTML teil bei einem Termin in den Body einfügen per VBA :-(

Da ich die vorlag für 4 Termine am Tag verwenden möchte, in die Formalge jedes mal die Adresse die Kontaktperson etc. fix eingetragen wurden soll, ich die Daten jedoch in meinen Kontakten alle schon gepflegt habe, habe ich gehofft das ich mit dieser vorlag auch gleich die Daten dort einfügen lassen kann.

Was nicht geht geht nicht, schade.
denn von Hand einfügen dauert zu lange, jeden Tag.

Sehr schade das man im termin keinen HTML teil einfügen kann, da man ja sonst auch tabelen erstellen kann. oder gibt es da einen anderen Code für? wie z.B. den BBC Code im Forum?

markusxy
22.11.2017, 20:49
Über die Redemption Klasse wäre es möglich darauf zuzugreifen.

http://www.dimastr.com/redemption/SafeAppointmentItem.htm

LG Markus

Muecke.1982
22.11.2017, 21:45
Über die Redemption Klasse wäre es möglich darauf zuzugreifen.

http://www.dimastr.com/redemption/SafeAppointmentItem.htm

LG Markus
Oh das wäre echt cool wenn das gehen würde.

Da muss ich etwas herum experimentieren, wie ich das in meinen Code integriert bekomme, für mich ist das alles Chinesisch was ich da gerade gelesen habe :-(

Wenn ich was hin bekomme melde ich mich mit einer Lösung ;-)

du hast nicht zufälligerweise ein Beispielcode ? der das macht was ich oben in meinem Code habe?

markusxy
23.11.2017, 08:40
Ich habe jetzt grade im Objektkatalog gesehen, dass bei Redemption die HTMLBody Eigenschaft schreibgeschützt ist. Die Arbeit wollten die sich offensichtlich nicht antun.

Eine kurze Suche hat außerdem ergeben, dass das Thema eh schon oft behandelt wurde. Die Erste Lösung war via Copy und Paste einzufügen.
Vielleicht findest du ja eine Lösung mit VBA.

LG Markus

Muecke.1982
23.11.2017, 09:58
Schade, dann geht das nicht was ich vor habe.

ich könnte das natürlich extrem Kompliziert machen.

1) Von Hand Kontakt suchen und Öffnen
2) Makro auslösen
3) Makro
3.1) Makro Öffnet eine bestimmte Excel Datei
3.2) Makro trägt in der Excel Datei in bestimmte Zellen Daten vom Kontakt ein
3.3) Makro Kopiert den Relevanten Bereich aus der Excel Datei
3.4) Makro fügt den Kopierten Bereich in einen Neuen Termin ein.

Wow, dann ist die Frage ob die Zellen alle noch die Richtige Größe haben oder nicht.

Das muss ich mir noch mal überlegen ob ich das alle machen möchte dafür.

oder hat du eine andre Idee im Kopf die etwas umständlicher ist ;-) über die ich nachdenken kann?


Gruß Mücke

markusxy
23.11.2017, 11:41
Schade, dann geht das nicht was ich vor habe.

Manchmal muss man eben andere Wege gehen. :)

Es gibt auch noch die RDOAppointmentItem Klasse von Redemption.
Wenn du in der Lage bist, selbst etwas zu programmieren, dann könnte es damit gehen. Nur du musst dich selber informieren und einlesen, da ich damit noch nicht gearbeitet habe.

Viel Spaß weiterhin.
LG Markus

Muecke.1982
23.11.2017, 15:57
Danke für deine Unterstützung bisher.

ich bin ein ganze Stück schlauer geworden.

Mit Normalen Bordmittel ist das nicht so einfach zu machen.
Dafür jetzt extra etwas zu programmieren ist mir ehrlich gesagt zu viel.

Aber danke für deine Trips und Geduld für mich.


Gruß Mücke