Office: (Office 365) docmd.sendto liefert Fehler 2046 Befehl steht nicht zur verfügung

Helfe beim Thema docmd.sendto liefert Fehler 2046 Befehl steht nicht zur verfügung in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; System: Windows Terminal Server 2025. Kein Office installiert, kein Outlook. Weil aber einiges an Arbeit in Datenbankapplikationen geflossen ist, wird... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von sdrgb, 2. Februar 2026 um 22:33 Uhr.

  1. sdrgb Neuer User

    docmd.sendto liefert Fehler 2046 Befehl steht nicht zur verfügung


    System: Windows Terminal Server 2025. Kein Office installiert, kein Outlook. Weil aber einiges an Arbeit in Datenbankapplikationen geflossen ist, wird die Access Runtime für alle User ausgerollt, eine Access 365 Lizenz dient zum Warten und Weiterentwickeln der Programme.
    Als Email-Client verwenden wir Thunderbird, der ist auch als Standardapplikation für alle Email-aktivitäten in der Systemsteuerung hinterlegt. Den "Trick" in den Einstellungen für Thunderbird auch nochmal die Haken zu setzen für Standard für Email etc. ebenfalls gemacht.
    Nun soll wie bisher aus einer VBA Programmierung ein Bericht als PDF per Email versendet werden. Hat mit ACC 2016 unter Windows Server 2016 auch problemlos funktioniert, jetzt kommt die Fehlermeldung 2046, der Befehl docmd.sendto steht aktuell nicht zur Verfügung. Anscheinend fehlen Access da einige Bibliotheken, die in einer Outlook Installation mitgeliefert werden (die wir aus Gründen nicht wollen; ausserdem kostet Outlook jetzt Geld. Wir sind nicht geizig, aber keiner hier will Outlook und Thunderbird tut's für fast alles genauso).
    Weiß jemand wie man automatisierten email-Versand von PDF in Access VBA ohne Office/Outlook 365 realisieren kann?
     
  2. andyfau
    andyfau Erfahrener User
    Hallo,
    Thunderbird lässt es zu über die Komandozeile mit dem Befehl -compose komplette Emails zu generieren und zu verschicken. Du musst aus Access also nur einen entsprechenden shell-Befehl aufbauen und absetzen.
     
    1 Person gefällt das.
  3. knobbi38 hat Ahnung
    @sdrgb

    Begrüßung ist nicht mehr üblich, wenn man einen neuen Thread eröffnet und eine Frage an das Forum stellt?

    Eine Methode .SendTo kennt das DoCmd Objekt nicht. Kann es sein, daß du vielleicht .SendObject für das Versenden von Mails verwendest?

    Damit das funktionieren kann, muß Thunderbird als Default-Mail-Client registriert sein. Zur Überprüfung kannst in der Eingabeaufforderung folgendes eingeben:
    Code:
    reg query HKCU\Software\Clients\Mail
    Änderungen kannst du unter "Apps/Standard Apps" in den Einstellungen vornehmen.

    Bevor du aber weiter nach Fehlern suchst, solltest du prüfen, ob sowohl die Runtime als auch Thunderbird die gleich Bit-Breite aufweisen, also beide müssen entweder 32- oder 64 Bit-Versionen sein!

    Knobbi38
     
    1 Person gefällt das.
  4. sdrgb Neuer User

    docmd.sendto liefert Fehler 2046 Befehl steht nicht zur verfügung

    Hallo knobbi, hallo Andy, sorry wegen der fehlenden Anrede. Ich möchte gerne auf den Timestamp des posts als Erklärung verweisen, der Tag war lang und unerquicklich.
    @ Andi: Auf den Workaround mit der Kommandozeile des Thunderbird bin ich auch gestossen, allerdings muss ich eine ganze Reihe von Mails verschicken, da müsste man etwas implementieren das auf den Abschluss des ersten Tasks wartet bevor der nächste gestartet wird.
    @ Knobbi: Ist alles in der 64-Bit Welt installiert.
    Wir arbeiten mit Patientendaten und haben uns aktiv gegen Office 365 entschieden, weil Datenschutz, Abonnement-Modell, kontinuierliche Enshittification und AI-Implementierung einen Hügel aufgeschüttet haben, der uns groß genug erschien um darauf zu sterben. Die Lizenzkosten waren dann nur noch der Flutlichstrahler für die Steilwand.
    Natürlich arbeitet unsere Arztsoftware nur mit MS-Office zusammen, die Basisfunktionen in Libre Office zu implementieren war ein ermüdender Prozess zwischen Weihnachten und 7. Januar, die Gui für die Makroprogrammierung in Libre Office ist hart wenn man ein transparentes Objektmodell aus dem VBA Editor gewohnt ist. Fragt nicht nach den Klimmzügen die unser Systembetreuer machen musste um für die Anwender die Access runtime und für mich die Vollversion zu installieren. Und dann hast du alles am laufen, testest deine deine Programmierung und stößt auf diese Wand, die wahrscheinlich halt doch absichtlich stehen gelassen wurde.
    Und ihr habt natürlich recht, es war DoCmd.SendObject.
    Lösung: Geliefert von Gemini, hat ein Kollege machen lassen, ein Quelle findet sich leider nicht.
    Wenn man in den Verweisen die Microsoft CDO for Windows 2000 Library einbindet erhält man Zugriff auf zwei Object-Strukturen. Die kann man dann straight forward entsprechend befüllen. Pferdefuß ist die im Klartext notwendige Übergabe der Benutzer/Passwort-Kombination. Was es mit den Schemas bei Microsoft.com auf sich hat: ??, was die einzelnen Einträge bewirken ist natürlich schon selbsterklärend.

    Dim iMsg As Object
    Dim iConf As Object
    Dim Flds As Variant

    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")

    iConf.Load -1
    Set Flds = iConf.Fields

    ' IONOS SMTP Konfiguration
    With Flds
    ' Sendemethode: 2 steht für SMTP
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    ' IONOS SMTP Server
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.ionos.de"
    ' Port für SSL/TLS
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
    ' Authentifizierung aktivieren
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    ' DEINE IONOS DATEN
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "deine-mail@deine-domain.de"
    .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "DEIN_PASSWORT"
    ' SSL Verschlüsselung einschalten
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    .Update
    End With

    ' Mail-Inhalt
    With iMsg
    Set .Configuration = iConf
    .To = strEmpfaenger
    .From = "deine-mail@deine-domain.de" ' Muss mit dem Login übereinstimmen
    .Subject = strBetreff
    .TextBody = "Guten Tag," & vbCrLf & vbCrLf & "anbei erhalten Sie das Dokument als PDF."

    ' PDF Anhang prüfen und hinzufügen
    If strDateiPfad <> "" And Dir(strDateiPfad) <> "" Then
    .AddAttachment strDateiPfad
    Else
    MsgBox "Datei nicht gefunden: " & strDateiPfad, vbExclamation
    Exit Sub
    End If

    ' Versand
    On Error Resume Next
    .Send
    end with

    Damit verschickt man nun völlig problemlos seine Emails mit Attachment, CC und BCC Felder sind natürlich auch noch möglich.
    Problem: Per SMTP wird die Nachricht zwar verschickt, wandert aber nicht in den Ordner gesendete Objekte, was wir über ein BCC an die eigene Absenderadresse und eine Regel gelöst haben die diese Mails dann automatisch vom Posteingang nach gesendet verschiebt.
    Das Ganze funktioniert natürlich nur solange MS nicht die Objektbibliotheken für Windows 2000 als obsolet kennzeichnet und entfernt. Irgendwie war mein Leben zu Windows 2000 Zeiten auch einfacher.
    Vielen Dank für die Antworten, ich hoffe die Lösung bringt anderen Anwendern zumindest Ansatzpunkte.
     
  5. knobbi38 hat Ahnung
    Hallo,

    richtig, mit CDO kannst du ebenfalls Mails mit VBA versenden, ist halt ein wenig aufwendiger und es gibt ein paar Fallstricke zu beachten.

    Hier mal ein paar Links, die du vielleicht mal brauchen könntest:
    Emails mit VBA und der CDO Bibliothek versenden
    Sending mail from Excel with CDO

    Wie aber schon gesagt, ist nicht sicher, wie lange diese Datei noch in Windows enthalten ist, denn sie ist schon lange von MS abgekündigt, aber totgesagte leben ja bekanntlich länger.

    Für eine kommerzielle Software könnte man auch auf MailMan von Chilkat Software oder RDO zurückgreifen.

    Btw.: Für Software im medizinischen Bereich verwende ich immer noch SendObject , welches mit Outlook oder Thunderbird bisher (noch) keine Probleme gemacht hat.

    Knobbi38
     
Thema:

docmd.sendto liefert Fehler 2046 Befehl steht nicht zur verfügung

Die Seite wird geladen...
  1. docmd.sendto liefert Fehler 2046 Befehl steht nicht zur verfügung - Similar Threads - docmd sendto liefert

  2. Suche liefert keine Ergebnisse

    in Microsoft Outlook Hilfe
    Suche liefert keine Ergebnisse: Ich nutze Windows 11 Home mit Outlook 2007, wo ich zwei IMAP-Postfächer eingebunden habe. Die Suche im Posteingang liefert keine Ergebnisse, egal welche Wörter eingebe. Ich habe die Indizierung...
  3. Suchfunktion liefert KEIN Ergebnis

    in Microsoft Outlook Hilfe
    Suchfunktion liefert KEIN Ergebnis: Hallo, ich bräuchte mal Eure Hilfe ... Bei mir funktioniert die Suchfunktion in Outlook 365 so überhaupt nicht. Egal was ich für ein Wort eingebe ... kommt immer keine Ergebnisse Indizierung...
  4. DoCmd RunSql liefert Fehler in einer Funktion

    in Microsoft Access Hilfe
    DoCmd RunSql liefert Fehler in einer Funktion: Hallo Leute. Mit der folgenden Code in "Private Sub" gibt es kein Problem. Alles läuft super. Ich bruche diesen Code als Function, damit ich es aus einem Makro ausführen lassen möchte (oder...
  5. DoCmd Export nach Excel 2016

    in Microsoft Access Hilfe
    DoCmd Export nach Excel 2016: Guten Morgen! Ich möchte gerne erreichen, dass die Abfrage "Zusammenfassung" nach Schließen eines Formulars nach Excel exportiert wird. Dazu habe ich folgenden Code: Code: Private Sub...
  6. DoCmd Click nächste Registerkarte

    in Microsoft Access Hilfe
    DoCmd Click nächste Registerkarte: Hallo Leute, ich habe ein Navigationsformular mit mehreren Reitern. Im 1. Formular gibt man Daten ein. Am Ende dieses Formulars ist dann ein Knopf der die Datenspeichert und über eine Select Case...
  7. DoCmd -> Laufzeitfehler 2486

    in Microsoft Access Hilfe
    DoCmd -> Laufzeitfehler 2486: ich habe bei einer Datenbank immer wieder mal das Problem das keine "DoCmd" Anweisungen ausgeführt werden können. Es erscheint der Laufzeitfehler 2486. Dieses hat dann auch zur Folge das sich...
  8. Docmd.TransferText liefert Fehler 2046 Der Befehl oder die Aktion steht momentan...

    in Microsoft Access Hilfe
    Docmd.TransferText liefert Fehler 2046 Der Befehl oder die Aktion steht momentan...: Hallo zusammen, ich verwende den Befehl Docmd.TransferText. Dieser liefert zeitweise den Laufzeitfehler 2046 "Der Befehl oder die Aktion TransferText' steht momentan nicht zur Verfügung."...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden