• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

MS Access & Mails

  • Ersteller Gelöschtes Mitglied 683020
  • Erstellt am

Gelöschtes Mitglied 683020

Guest
Mal eine Frage zu MS Access, bin dafür wohl zu unversiert und hab von Technik auch absolut keine Ahnung.

Ich möchte bei mir auf der Arbeit ein Formular erstellen, in dem man Kundenkontakte sammeln kann. Das meiste klappt auch ziemlich gut, allerdings hätte ich gerne einen Button, mit dem ich direkt eine Standard-Mail verschicken kann. Deutlicher formuliert etwa einen Knopf "Störungsmail an IT senden", der, wenn gedrückt, Outlook öffnet und eine Mail mit einem vorformatierten Text öffnet.

Ich entdeckte dort ein entsprechendes Makro, das mir so etwas ermöglicht, dummerweise ist der Mail-Text viel zu kurz (255 Zeichen). Eine Alternativlösung via HTML-Mails fand ich, hab ich aber überhaupt nicht gerallt, und noch dazu müsste ich sowieso eine zweite Mail an Kunden schicken, bei denen ich mir nicht sicher bin, ob die sich so was anzeigen lassen können.

Hat irgendwer eine Ahnung, ob

a) mehr als 255 Zeichen via Mail + Acess überhaupt generiert werden können und
b) das mit Newb-Verständnis möglich ist?

Für Hilfe gebe ich gerne Likes.
 

parats'

Tippspielmeister 2012, Tippspielmeister 2019
Mitglied seit
21.05.2003
Beiträge
20.339
Reaktionen
1.793
Ort
St. Gallen
Meine VBA Zeit ist zwar schon 10 Jahre her, aber .Net ist immerhin .Net. ;)

Importiere dir zuerst die Outlook Library Microsoft.Office.Interop.Outlook - glaube bei Access gibt es noch immer kein 'Import', daher muss es per Add Reference hinzugefügt werden.

Danach brauchst du eigentlich nur noch Outlook.MailItem und Outlook.Application.
Dem MailItem wird der Prozess per CreateItem zugewiesen um danach dann alle Properties festzulegen wie bspw. Empfänger oder Betreff.
Das Fenster selbst kannst Du dann mit .display hervorholen.

Wie gesagt sind meine Office VBA skills schon sehr eingerostet und beschränken sich auch eher auf das füllen von Word templates per Access, aber prinzipiell ist das nichts anderes.

p.s. Wenn du unterschiedliche Office Versionen im Einsatz hast, dann fliegt die Referenz in Access jeweils raus, weil das Binding dort an die Version des Outlook Clients gebunden ist. Ähnliche Probleme hatte ich damals beim Wechsel von Word 2007 auf Word 2010.
 

Gelöschtes Mitglied 683020

Guest
Okay, erstmal ein Like, wie versprochen.

Ansonsten habe ich mich wohl nicht klar ausgedrückt: Ich bin ein Übernewb was Technik angeht. Und mit Technik meine ich alles. Ich hab noch nie was mit VBA gemacht, meine "Programmier"kenntnisse beschränken sich auf wenige if-schleifen in STATA. :deliver:

Ich versuche einfach mal zu beschreiben, was ich in etwa gemacht habe. Aus der Erinnerung, weil ich zu Hause den Schrott gottseidank nicht habe.

In meinem Formular habe ich einen Button "E-Mail an IT senden" eingefügt. Danach habe ich mit dem Makrogenerator das "Emaildatenbankobjekt"-Template modifiziert. In der Eigenschaftenansicht des Formulars habe ich dann bei "Ereignis" für den Button das modifizierte Makro gewählt; mit moderatem Erfolg. Ich kann jetzt eine Mail senden, allerdings fasst der Textkörper nur 255 Zeichen, was deutlich zu wenig ist.

Via Google habe ich diverse Syntax/Codes gefunden, die wohl Mails versenden könnnen. U.a. fand ich auch Hinweise, ich sollte die Libraries laden (was ich auch tat, kp mehr wo das ging). Im VBA Editor fügte ich dann die Syntax ein, modifizierte sie für meine Zwecke und speicherte alles. Weiterhin liesen sich auch die Scripts (oder wie man das nennen mag) im VBA-Editor ausführen - auch mit moderatem Erfolg (wieder 255 Zeichen im Textkörper, ich erinnere mich an sachen wie .docm send oder so was).

Wie ich jetzt allerdings den Button mit dem Script verknüpfe übersteigt meinen Horizont, dafür bin ich anscheinend viel zu dum. Ich kriege es gerade mal hin, dass der Button den VBA Editor mit dem Script öffnet :ugly:

Naja, wie dem auch sei, ich hab jetzt einfach ein zweites Formular erstellt, das durch den "E-Mail an IT" Button geöffnet wird. In dem zweiten Formular kann ich mir via Dropdown für ein paar Punkte Texte auswählen und das ausgefüllte Formular wiederum durch das Emaildatenbankobjekt-Dings als .pdf im Anhang einer Mail versenden. Elegant ist jetzt zwar anders, aber vma :8[:
 

parats'

Tippspielmeister 2012, Tippspielmeister 2019
Mitglied seit
21.05.2003
Beiträge
20.339
Reaktionen
1.793
Ort
St. Gallen
Access Formular Editor und über die Eigenschaften in den Events das OnClick Event auswählen. Danach öffnet sich der VBA Editor und dort kannst Du deinen Code einfügen.

Access ist vielleicht wirklich die falsche Plattform für dich, wenn Du technisch nicht so tief in der Materie steckst. Access ist mächtig und kann extrem viel, wenn man sich die Mühe macht und entsprechendes in VBA umsetzt.
Ich bin generell kein Makro Freund, da diese einfach technisch limitierend sind, wenn es nun aber geht sei es drum. :)
 

Gelöschtes Mitglied 683020

Guest
Ja, den Code hab ich da eingefügt, es tut sich aber nichts. Was seltsam ist, da der Code ja im VBA Editor funktioniert. Wahrscheinlich fehlt irgendeine Library oder was weiß ich, hab das Programm gefressen. Wie gesagt, wenn unsere IT ein Datum für die Custom-Software liefern würde, das früher als "vielleicht Dezember" wäre, hätte ich das auch nie freiwillig angefasst :ugly:

Egal, danke nochmal.
 

Gelöschtes Mitglied 683020

Guest
"Bump"

Eine Access und VBA Schulung später hab ich paar Workarounds gefunden, um mehr als 255 Zeichen zu versenden: Man macht deklariert Textvariablen und bindet die in den Body ein die. Fuck yeah.

Neue Frage, da die Schulungen dürftig waren:

Kann ich ein zweites Postfach ansprechen, wenn ja wie?

Erklärung: Ich hab ein Standardpostfach, und eines von dem automatisierte Mails versendet werden sollen. Mein VBA-Code (leider nur auf der Arbeit) öffnet automatisch mein persönliches. Wäre cool, wenn der letzte Schritt drin wäre. Momentan nutze ich:

Code:
Public Sub sendMail()

    Dim myMail      As Outlook.MailItem
    Dim myOutlApp   As Outlook.Application

    ' Ein neue Outlook-Instanz und ein neues Mailitem erstellen
    Set myOutlApp = New Outlook.Application
    Set myMail = myOutlApp.CreateItem(olMailItem)

    With myMail
        ' Den Empfänger der Mail festlegen
        .To = "recipient@somewhere.invalid"
        ' Einen CC-Empfänger hinzufügen
        .CC = "other.recipient@somewhere.else.invalid"
        ' Den Betreff der Mail festlegen
        .Subject = "My first mail sent with Outlook-Automation"
        ' Text in die Mail einfügen
        .Body = "Hello dear friend, " & vbCrLf & vbCrLf & _
                "This is my first mail produced and sent via Outlook-Automation." & _
                vbCrLf & vbCrLf & "And now I will try add an attachment."
        ' Ein Attachment aus dem Dateisystem anhängen
        .Attachments.Add "c:\path\to\a\file.dat"

        ' Die Email abschicken
        .Send
        ' Anstatt die Email sofort zu senden, kann man auch die Display-Methode des
        ' Mailitems verwenden, um die Email anzuzeigen und sie vom Benutzer manuell
        ' verschicken zu lassen. 

    End With

    ' Die Outlook-Instanz beenden
    myOutlApp.Quit

    ' Objektvariablen zerstören und Speicher freigeben
    Set myMail = Nothing
    Set myOutlApp = Nothing

End Sub

^ schlecht gepastet von irgendeinem Tutorial und natürlich angepasst mit meinen Stringvariablen für Empfänger/Titel/Textkörper.
 

parats'

Tippspielmeister 2012, Tippspielmeister 2019
Mitglied seit
21.05.2003
Beiträge
20.339
Reaktionen
1.793
Ort
St. Gallen
Wie du mich einfach nicht verstanden hast, genau das war mein Vorschlag. :ugly:

Zur frage - das Objekt kriegt seine Eigenschaften als String und parsed diese auch so, insofern einfach per Semikolon mehrere Adressen angeben (wie in Outlook). ;)
 

Gelöschtes Mitglied 683020

Guest
ja, bis auf die variablen mit den strings. der body des Codes weiter oben transportiert ja nur 255 zeichen.

und meine frage jetzt bezieht sich nicht auf den empfänger, sondern den sender.
 

Gelöschtes Mitglied 683020

Guest
Das 1 Min Google ist so eine Sache auf der Arbeit. Da haben wir ein total kaputtes Intranet und ein schlimmeres Internet. Sorry, dass ich mich wie ein Turbonewb anstelle :ugly:
Ich kopier mir das für Dienstag und probier es bei Gelegenheit. Zu Hause bin ich mir zu Schade dafür :8[:

€achja, likes verteilen.
 
Oben