Problem mit VBA Access/Outlook 2003

Hallo,

ich habe ein Access Datenbank (Adressen). Dort gibt es im Formular einen Button „email“, der eine neue Nachricht öffnet, in die eben schon der Empfänger eingtragen ist.
Was mich bzw. einen Benutzer nervt: Das Fenster das sich öffnet, lässt sich nicht minimieren. Oft muss man aber aufs Formular schauen, um zu sehen, was man in die Mail schreibt. Das Formular ist aber genau verdeckt. Man kann das Fenster veschieben, die Größe ändern…aber der „mimimize“ Button oben rechts im Fenster geht nicht. Was mich auch wundert: Bei Alt-Tab wird das Nachrichtenfenster als Access-Objekt angeziegtm nicht als OL 2003…aber liegt wohl an dem verwendetem VBA Code, der da wäre:

Private Sub eMail_Button_Click()

On Error GoTo Err_eMail_Click

Dim empfaenger, betreff, nachricht As String

empfaenger = Email
nachricht = „“

DoCmd.SendObject acSendNoObject, , , empfaenger, , , , nachricht

Exit_eMail_Click:
Exit Sub

Err_eMail_Click:
MsgBox Err.Description
Resume Exit_eMail_Click

End Sub

Kann man das mit anderem Code lösen? Also ich möchte wie gesagt, dass das Email-Fesnter mimimierbar wird. Bin gerade am Einarbeiten in VBA, aber komme nicht dahinter.

Danke und Grüsse,

samson

Hallo Samson,

fogende Erweiterung (do events) könnte helfen:

Private Sub eMail_Button_Click()

On Error GoTo Err_eMail_Click

Dim empfaenger, betreff, nachricht As String

empfaenger = Email
nachricht = „“

do events

DoCmd.SendObject acSendNoObject, , , empfaenger, , , ,
nachricht

Exit_eMail_Click:
Exit Sub

Err_eMail_Click:
MsgBox Err.Description
Resume Exit_eMail_Click

End Sub

Grüße aus Essen
Wolfgang

Hallo Samson,

doEvents

die Funktion wird zusammen geschrieben!

hier noch ein Auszug aus der Accesshilfe dazu:

Übergibt die Steuerung an das Betriebssystem, damit es andere Ereignisse verarbeiten kann.

Syntax

DoEvents( )

Bemerkungen

Die DoEvents-Funktion gibt einen Wert vom Typ Integer zurück, der die Anzahl der geöffneten Formulare in eigenständigen Versionen von Visual Basic (z.B. Visual Basic, Professional Edition) repräsentiert. In allen anderen Anwendungen gibt DoEvents Null zurück.

DoEvents übergibt die Ablaufsteuerung an das Betriebssystem. Das Programm erhält erst dann die Steuerung wieder zurück, wenn das Betriebssystem alle wartenden Ereignisse verarbeitet hat und alle wartenden Tastenanschläge in der SendKeys-Warteschlange abgearbeitet sind.

DoEvents ist für einfache Operationen besonders hilfreich, wenn z.B. einem Benutzer die Möglichkeit gegeben werden soll, einen Prozeß abzubrechen, nachdem er begonnen wurde, beispielweise die Suche nach einer Datei. Bei länger andauernden Vorgängen sollte die Steuerung besser mit Hilfe eines Zeitgebers an den Prozessor abgegeben werden, oder die Aufgabe sollte einer ActiveX-EXE-Komponente übertragen werden. Im zweiten Fall kann die Aufgabe vollkommen unabhängig von Ihrer Anwendung durchgeführt werden, und das Betriebssystem übernimmt das Multitasking und die Zuteilung der Prozessorzeit.

Vorsicht°°°Jedesmal wenn Sie die Steuerung zeitweise innerhalb einer Ereignisprozedur an den Prozessor abgeben, sollten Sie sicherstellen, daß die Prozedur nicht von einem anderen Teil des Codes aufgerufen wird, bevor der erste Aufruf beendet ist. Die Folgen eines solchen Aufrufs sind nicht vorhersehbar. Führen Sie DoEvents auch dann nicht aus, wenn Sie nicht ausschließen können, daß andere Anwendungen in irgendeiner Weise eine Verbindung mit der Prozedur herstellen, während das Betriebssystem die Ausführung steuert.

Grüße aus Essen
Wolfgang

Hallo,

wenn du Outlook nicht mit SendObject versorgst sondern Outlook mittels OLE oeffnest hast du die volle Kontrolle ueber die Application. Das ist zwar etwas aufwendiger aber um einiges flexibler.

Dim OLApp as Object
Set OLApp = CreateObject(„application.outlook“)

wie man eine neue Mail anlegt und mit den entsprechenden Parametern versorgt kann man in unzaehligen Beispielen im Netz finden.

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]