Autor Thema: Export aus Excel, Schriftart im Mail-Body  (Gelesen 10131 mal)

Offline kaosqlco

  • Frischling
  • *
  • Beiträge: 8
Export aus Excel, Schriftart im Mail-Body
« am: 19.01.06 - 15:09:21 »
Hallo Forum,

ich möchte aus Excel heraus ein Notes-Mail erstellen und dann verschicken. Dabei sollen Zahlen aus der Excel-Tabelle so in die Mail eingefügt werden, dass eine Art Tabelle entsteht (damit man die Mail auch auf einem Handy oder PDA lesen kann). Ich möchte keine Excel-Tabelle an die Mail anhängen! Grundsätzlich verwende ich diesen Code http://www.activevb.de/tipps/vb6tipps/tipp0544.html, nur leicht abgewandelt, da ich keinen Anhang anhängen will.
Damit ich in der Mail die Zahlen ausgerichtet untereinander darstellen kann, wollte ich eine gesperrte Schriftart, z.B. Courier verwenden. Ich habe allerdings noch keine Idee, wie ich das Notes per VBA-Code mitteile.

Wer kann mir helfen oder hat eine andere Lösung parat? Vielen Dank im Voraus, Gruß Jan

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #1 am: 19.01.06 - 15:21:14 »
Aaaalso:
Du schreibst den Inhalt der Mail ins Feld "Body", welches ein RichTextField ist. Über die entsprechenden Methoden des RicthTextItems kannst Du Attribute wie Schriftart, etc. manipulieren.
Das funktioniert verlässlich nur dann, wenn Du die Mails von Notes nach Notes schickst. Wenn dem so ist, kanns Du in dem RTF sogar Tabellen erstellen, dann schauts noch schöner aus.

Wenn die Mail allerdings ins Internet hinaus gehen soll, dann vergiss das alles ganz schnell wieder und schick reinen Text ohne Formatierungen. (aber das ist nur meine persönliche Meinung, andere werden sicherlich anführen, dass man das mit HTML machen kann, aber das find ich pfui).
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline kaosqlco

  • Frischling
  • *
  • Beiträge: 8
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #2 am: 19.01.06 - 16:58:49 »
Hallo Martin,

"RichTextItem" war wohl das richtige Stichwort. Und eine/meine Lösung dafür steht wohl hier: http://atnotes.de/index.php?topic=12903.0
Das kann ich aber erst morgen ausprobieren.

Gruß Jan

Offline kaosqlco

  • Frischling
  • *
  • Beiträge: 8
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #3 am: 20.01.06 - 08:41:18 »
Hallo Martin, hallo Forum,

die Lösung hinter dem Link sah vielversprechend aus, ich bekomme es allerdings nicht hin.
Wie gesagt, ich möchte LN quasi über Excel (VBA) fernsteuern. Von Lotus Script habe ich keine Ahnung, es sieht zwar aus wie VB/VBA, über Methoden im Allgemeinen bzw. über die des NotesRichTextItem habe ich bisher nicht viel herausgefunden.
Ich habe auch die notes32.tlb eingebunden, entscheidend weitergekommen bin ich damit in meinem Projekt nicht.

Ich bitte um Unterstützung, Danke und Gruß Jan

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #4 am: 20.01.06 - 10:24:12 »
... was du da vor hast ist nicht ganz trivial. Ich sehe da nur die Möglichkeit als eingebundenes HTML

Toni
Grüßle Toni :)

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #5 am: 20.01.06 - 10:40:55 »
Lieber kaosqlco, falls Du keine Zeit/Lust/... hast, Dich in VBA/LotusScript einzuarbeiten, stehen Dir sicherlich einige Forumsteilnehmer (darunter auch gerne ich) gegen einen enstprechenden Stundensatz zur Verfügung, damit wir Dir Deine gewünschten Features implementieren.

Ansonsten stelle konkretere Fragen als "Ich bitte um Unterstützung", dann wird Dir hier sicherlich auch weiterhin kostenlos geholfen.

Hast Du z.B. schon mal die Forumssuche benutzt? Zum Thema "Kommunikation Notes<->Excel" gibts bereits einige interessante Freds.

Weiters wäre mal gut, wenn du schrieben könntest, ob es sich um ein internes Notes-Mail oder eine SMTP.Mail handelt - das bringt auch einige Unterschiede.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline kaosqlco

  • Frischling
  • *
  • Beiträge: 8
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #6 am: 20.01.06 - 12:46:54 »
Liebe Martin, lieber Toni,

erstmal danke für Eure schnellen Antworten.
Martin hat recht, mit "Ich bitte um Unterstützung" habe ich mich - gerade als 'Frischling' etwas im Ton vergriffen und vielleicht auch nicht konkret genug gefragt; `tschuldigung.

In meiner Firma wird LotusNotes lediglich als MailClient genutzt. Dahingehend bin ich normaler Anwender und kann hier m.E. nichts mit LotusScript machen, nicht mal schauen welche Objekte und Methoden es gibt.
Letztendlich geht es mir nur darum, die Daten, die in einer Excel-Tabelle vorliegen, in einer Notes-Mail einigermaßen ansprechend darzustellen. Das mit der gesperrten Schrift war mein erster Gedanke, html-Formatierung ist aber auch eine Idee. - Die Notes-Mail soll als internes Notes-Mail verschickt werden.
Über Google-Suche bin ich auf Euer Forum gestoßen und hier auch schon gesucht. - Den passenden Ansatz habe ich leider noch nicht gefunden, ich suche und lese aber weiter.

Konkrete Fragen:
Mit welchen Methoden kann ich die Schriftart/Schriftgrösse des RichTextItem ändern?
Wie binde ich html ein? Reicht es, einfach html-Tags in den Body der Mail zu übergeben oder gibt es hier auch besondere Objekte und Methoden?

Gruß Jan


Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #7 am: 20.01.06 - 13:48:38 »
OK, Du solltest Dir mal von der IBM-HP die Designer-Hilfe herunterladen, falls Du die noch nicht hast. Dort findest Du alles, was Du hinsichtlich Infos zu Notes-Objekten und Methoden brauchst.

Unter http://www.fabalou.com/VBandVBA/lotusnotesmail.asp findest Du ein Beispiel, wie Du mit VBA ein Notes-Mail erstellst.

Details zum NotesRichTextItem findest Du unter diesem Stichwort in der Designer-Hilfe.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline kaosqlco

  • Frischling
  • *
  • Beiträge: 8
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #8 am: 23.01.06 - 15:40:39 »
Hallo Martin,

die Designer-Hilfe habe ich mir schon besorgt. Mangels Admin-Rechten unter Notes und einer Entwicklungsumgebung kann ich vieles aber nicht umsetzen und bin auf Try and Error angewiesen.
Bei meiner Suche im I-Net bin ich dann aber auf ein VB-Beispiel zu meinem Thema gestossen und etwas angepaßt sieht das als Funktion dann so aus:

Code
Function SendNotesMail(strMessage As String, _
    strSubject As String, _
    strSendTo As String, _
    strAttachment As String, _
    Optional bolSenden As Boolean = True)
    
    On Error GoTo NotesMail_Err
    
    Dim lnSession As Object
    Dim lnDatabase As Object
    Dim lnDocument As Object
    Dim lnRTStyle As Object
    Dim lnRTItem As Object
    Dim lnATTACHMENT As Object
    Dim sMessage As String
    
    ' Session starten
    Set lnSession = CreateObject("Notes.Notessession")
    
    ' Create a new Style
    Set lnRTStyle = lnSession.CreateRichTextStyle
    
    ' Verbindung zur Datenbank
    Set lnDatabase = lnSession.GetDatabase("", "")
    lnDatabase.OpenMail
    
    ' Neues Dokument
    Set lnDocument = lnDatabase.CreateDocument
    
    ' Neues NotesRichTextItem erstellen, Body im RichText formatieren
    Set lnRTItem = lnDocument.CreateRichTextItem("Body")

    ' Anhang
    If strAttachment <> "" Then Set lnATTACHMENT = lnRTItem.EMBEDOBJECT(1454, "", strAttachment, "Sample")
    
    ' Nachricht
    sMessage = "Mail gesendet: " & Date & " " & Time & vbCrLf & vbCrLf & strMessage & vbTab & "test" & vbCrLf & _
        "Das ist ein Test" & vbTab & "test"
    
    ' Nachricht formatieren
    lnRTStyle.NotesFont = 4     ' Courier
    lnRTStyle.Bold = True       ' Fett
    lnRTStyle.NotesColor = 2    ' Rot
    lnRTStyle.FontSize = 20     ' 20
    
    Call lnRTItem.AppendStyle(lnRTStyle)
    Call lnRTItem.AppendText(sMessage)
    
    ' Formatierungen / Texte
    With lnDocument
        
        .Form = "Memo"
        .ReplaceItemValue "SendTo", strSendTo
        .ReplaceItemValue "Subject", strSubject
        
        ' Senden / Gesendet anzeigen oder als Entwurf speichern
        If bolSenden = True Then
            .SAVEMESSAGEONSEND = True
            .Send False
        Else
            Call .Save(True, False)
        End If
    End With
    
    Set lnRTItem = Nothing
    Set lnRTStyle = Nothing
    Set lnDocument = Nothing
    Set lnDatabase = Nothing
    Set lnSession = Nothing
    
    If bolSenden = True Then MsgBox "Mail wurde gesendet!", vbInformation Else MsgBox "Mail wurde gespeichert!", vbInformation
        
    Exit Function

NotesMail_Err:
    MsgBox Err.Description, vbExclamation, "Fehler! (" & Trim$(Str$(Err)) & ")"
End Function



Damit funktioniert das Einfügen von Text in den Body einer Mail, wobei Schriftart, -farbe, -größe etc. beeinflußt werden können.
Als nächstes interessiert mich aber (quasi als Alternative), wie ich html-Code in den Body der Mail schreiben kann und ihn nachher auch noch als html-Code angezeigt bekomme.

Gibt es hierzu spezielle Methoden?

Gruß Jan

Offline kaosqlco

  • Frischling
  • *
  • Beiträge: 8
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #9 am: 23.01.06 - 18:37:59 »
Hallo Forum,

im Internet (www.planet-source-code.com) habe ich diesen Ansatz gefunden (bezogen auf obigen Code):
Code
Call lnDocument.GOTOFIELD("Body")
Call lnDocument.IMPORT("HTML", "c:\temp.html")
Das funktioniert aber leider beides nicht, auch wenn ich .GOTOFIELD weglasse. Ich bekomme einen Laufzeitfehler 438, 'Object unterstützt Eigenschaft oder Methode nicht'.

'Zu Fuss' - über Datei / Importieren - kann ich aber durchaus diese html-Datei einfügen. Wie könnte das per VB-Code gehen?

Danke und Gruß, Jan


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #10 am: 23.01.06 - 23:42:50 »
Hallo Jan,

irgendwie hast Du eine undankbare Aufgabe bekommen ... Du hast keinen Zugang zu einem (programmierbaren) Notes-System, und damit stehst Du arg auf dem Schlauch. Und ich sehe so keine Chance, dass Du viel weiter kommen kannst (allein schon, weil Du so die vollkommen unterschiedlichen Philosophien der Systeme nicht erkennen kannst).

Ich kann jetzt locker-flockig sagen: "Ja, okay, das kann auch nix werden, da Du bisher im Backend gearbeitest hast (NotesDocument class) und es nun mit einer FrontEnd class versuchst (NotesUIDocument.GotoField und .Import). Das kann nix werden, zieht aber gleich einen ganzen Sack weiterer Fakten nach sich, die ein Forum kaum beantworten kann.

Kannst Du Dir einen Zugang "erzwingen" zu einem System, mit dem Du Notes kennenlernen kannst? Sonst wird das nix ...

Bernhard

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #11 am: 24.01.06 - 08:32:18 »
Hallo!

@kaosqlco Ich würde auch empfehlen, wenn Ihr keine Skils über Lotus Notes Programmierung habt, dass einen externen Dienstleister machen zu lassen. Wohl gemerkt ich bin kein Dienstleister, aber es macht so keinen Sinn. Den wenn du in eine falsche Richtung arbeitest, wird das nie 100% funktionieren. Vor allem hat Lotus Notes viele Fallstricke in dieser Richtung zu bieten. Falls du es doch ernsthaft probieren willst, kann ich nur empfehlen einen Lotus Designer Grundkurs und zumindest den script Kurs zu besuchen.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline kaosqlco

  • Frischling
  • *
  • Beiträge: 8
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #12 am: 24.01.06 - 18:40:38 »
Hallo Ralf und Bernhard,

ja, eigentlich spricht alles gegen mich!
Trotzdem habe ich noch weiter gesucht/gegoogelt/gelesen und u.a. auch die 'notes32.tlb' und 'domobj.tlb' im VB-Objektkatalog angeschaut. Das half mir wenigstens ansatzweise zu verstehen, was in den Codebeispielen so passiert.

Herausgekommen ist erstmal das:
Code
    
    Dim lnWorkspace As Object
    Dim lnDocument As Object
       
    Set lnWorkspace = CreateObject("notes.NOTESUIWORKSPACE")
    Set lnDocument = lnWorkspace.COMPOSEDOCUMENT("", "", "Memo", 1, 1)
    
    Call lnDocument.GOTOFIELD("Send")
    Call lnDocument.INSERTTEXT("User01@xyz.de")
    Call lnDocument.GOTOFIELD("Copy")
    Call lnDocument.INSERTTEXT("User02@xyz.de")
    Call lnDocument.GOTOFIELD("Subject")
    Call lnDocument.INSERTTEXT("Test Mail")
    Call lnDocument.GOTOFIELD("Body")
    Call lnDocument.Import("HTML", "c:\temp.html")
    Call lnDocument.Send
    Call lnDocument.Close

Damit wird eine neue Mail erzeugt, Empfänger- und Betreff-Feld gefüllt und eine html-Datei in den Body kopiert und die Mail versendet. Auch auf die Gefahr hin, dass allen Profis die Haare zu Berge stehen:
Die Zeile
Code
Call lnDocument.GOTOFIELD("Copy")
funktioniert nicht, bringt aber auch keine Fehler. - Wie spreche ich das Feld 'Kopie' an (mit 'CC' oder 'CopyTo' funktioniert es auch nicht).

Wie lege ich fest, aus welcher geöffneten Mail-Datenbank das Mail gesendet werden soll, wenn ich mehrere geöffnet habe. Derzeit wird die gewählt, die ich gerade in der Ansicht habe.

Vielen Dank im Voraus, Gruß Jan

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #13 am: 24.01.06 - 18:52:10 »
Wenn Du nicht an Notes-Basiswissen herankommen kannst, Jan: Vergiss es einfach. Das wird nix.

Wer verteilt denn solche Aufgaben? Ichhelfe ja wirklich gerne, aber das würde eine endlose Geschichte, weil irgend jemand an absolut der falschen Stelle Geld sparen will (und statt dessen mehr ausgeben wird).

Bernhard

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #14 am: 24.01.06 - 18:54:55 »
Biß hat er ja, der Jan.
Ich würde auch vorschlagen, ihr tauscht mal die Telefonnummern aus und besprecht das weitere Vorgehen im Beisein von Jan's Chef. Da kommt mehr bei rum ...
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #15 am: 24.01.06 - 19:19:14 »
Ja, Biß hat er wirklich, der Jan. Hut ab! Schade, dass seine Energie so vergeudet wird. Die Idee mit dem Telefonat ist auch nicht schlecht - aber den Chef wird das nicht freuen  ;D

Bernhard

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #16 am: 25.01.06 - 07:55:39 »
Das Feld heisst "CopyTo".

Nochmal ich glaube das der Weg über OLE und das Frontend ein schlechter ist, da nicht sehr stabil. Was ist wenn z.B. jemand im Notes Client einen Modalen Dialog offen hat usw. Dann geht deine Routine nicht.

Leider verursachen genau solche zusammengewürfelten Programme aus Google Code Schnippseln den schlechten Ruf von Lotus Notes bei Anwendern. Es sieht dann aus, wie wenn nichts gehen würde und das Notes ein schlechtes System ist.

Grüße


Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline kaosqlco

  • Frischling
  • *
  • Beiträge: 8
Re: Export aus Excel, Schriftart im Mail-Body
« Antwort #17 am: 27.01.06 - 19:12:35 »
Hallo,

ich möchte diesen Beitrag nicht unbeendet lassen.

Deshalb hier meine neuesten Erkenntnisse:

In meinem Frontend heißt das Feld 'EnterCopyTo' (wozu gibt es Schleifen, mit denen man Objekte abfragen kann). ;)
Wegen des Arguments von Ralf, dass meine Routine nicht funktioniert, wenn ein modaler Dialog offen ist, und natürlich auch den Hinweisen der anderen Spezialisten habe ich mich wieder dem Backend gewidmet.

Mit folgendem Code bekomme ich eine HTML-Tabelle in meine Mail geschrieben und das Ganze als Entwurf gespeichert:
Code
    Dim lnSession As Object
    Dim lnDatabase As Object
    Dim lnBody As Object
    Dim lnStream As Object
    Dim lnDocument As Object

    Set lnSession = CreateObject("Notes.Notessession")
    Set lnDatabase = lnSession.CurrentDatabase
    
    ' Do not convert MIME to rich text
    lnSession.ConvertMime = False
    
    Set lnStream = lnSession.CreateStream
     
    'Begin creating the lnDocument doc to send
    Set lnDocument = lnDatabase.CreateDocument
     
    lnDocument.Form = "memo"
     
    Set lnBody = lnDocument.CreateMIMEEntity
     
    'Basic profile of email
    lnDocument.Subject = strSubject
    lnDocument.SendTo = strSendTo
     
    ' Open the HTML (Title doesn't matter since it doesn't appear anywhere)
    Call lnStream.WriteText("<html><head><title>HTML email via MIME</title>")
    Call lnStream.WriteText("</head><lnBody>")
    Call lnStream.WriteText("</lnBody></html>")
    Call lnStream.WriteText("<TABLE border=1 cellpadding=1 cellspacing=0><TR><TD width=5% align='center'>Testtabelle, Spalte1</TD>" & _
       "<TD width=35% align='center'>Testtabelle, Spalte2</TD></TR></TABLE>")
     
    ' Ensure the MIME content will be recognized as HTML
    ' (Must be after the lnStream is written)
    Call lnBody.SetContentFromText(lnStream, "text/html;charset=iso-8859-1", ENC_NONE)
    
    ' Restore conversion
    lnSession.ConvertMime = True
    
    ' Speichern
    Call lnDocument.Save(True, False)
Die ursprüngliche - von mir angepaßte - Routine habe ich bei 'searchdomino.com' (über Google-Suche) gefunden.

Ich empfinde meine Versuche, mich auf diese Weise mit Notes anzufreunden, übrigens nicht als vergeudete Energie und verbringe nicht - auch wenn es so aussehen mag - den ganzen Tag damit. - Als normaler Notes-User komme ich wegen eingeschränkter Rechte nicht sehr weit.
Das wird sich aber in Kürze hoffentlich ändern, denn ich bekomme demnächst Zugang zum Designer.

Gruß Jan


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz