[VBA] SendObject

Dann weißt Du doch was zu tun ist, also Text in eine Datei schreiben lassen und die Datei aufrufen und einfügen lassen. Das wird aber bei einer komplexen Datei schwierig werden aufs Handy zu senden, Auf 160 Zeichen Länge ist eine SMS Textbotschaft möglich.
 
dazu müßte ich aber wissen, wie man eine Accesstabelle in eine Worddateie oder TXT Datei ändere. Muß ich mal weiter suchen
 
Der eine Code, kann das sein, dass das mit Office 2003 nicht mehr geht?

Private Type MapiRecip
Reserved As Long
RecipClass As Long
Name As String
Address As String
EIDSize As Long
EntryID As String
End Type

Private Type MapiFile
Reserved As Long
Flags As Long
Position As Long
PathName As String
FileName As String
FileType As String
End Type

Private Type MAPIMessage
Reserved As Long
Subject As String
NoteText As String
MessageType As String
DateReceived As String
ConversationID As String
Flags As Long
RecipCount As Long
FileCount As Long
End Type

Private Declare Function MapiSendMail Lib "MAPI32.DLL" Alias "BMAPISendMail" _
(ByVal Session&, ByVal UIParam&, Message As MAPIMessage, Recipient() As MapiRecip, _
File() As MapiFile, ByVal Flags&, ByVal Reserved&) As Long

Private Const MAPI_DIALOG = &H8
Private Const MAPI_LOGON_UI = &H1
Private Const MAPI_NEW_SESSION = &H2

Option Explicit
Dim mmessage As MAPIMessage
Dim Recipient() As MapiRecip, File() As MapiFile
Dim Text1 As String
Dim Text2 As String
Dim Senden
Dim Empfänger As AccessObject
Sub MapiAufruf()

With mmessage
.Subject = "Umsätze" 'Betreff
.NoteText = "" 'Textinhalt
.MessageType = ""
.DateReceived = ""
.ConversationID = ""
.Flags = 0
.RecipCount = 0
.FileCount = 0
End With

Senden = MapiSendMail(0, 0, mmessage, Recipient, File, MAPI_DIALOG Or MAPI_LOGON_UI Or MAPI_NEW_SESSION, 0)
If Senden <> 0 Then
MsgBox ("Fehler oder Nutzerabbruch")
End If

End Sub


Bin nämlich zu Hause und habe Office 2003 drauf und im Betrieb Office XP.
 
Re: [VBA] SendObject Hat geklappt mit Einfügen von Text

'Hier beginnt das eigentliche Programm
Sub MapiAufruf()

'Die Tabelle die in die Email eingefügt werden soll, muß hier angegeben werden
Tabelle = InputBox("Bitte geben sie den Namen der entsprechenden Tabelle ein:")
'Hier wird diese Tabelle dann für den Gebrauch geöffnet
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset(Tabelle, dbOpenDynaset)
rs.MoveFirst
'Durchläuft die Bedigung so lange, bis er alle Daten aus der Tabelle einmal durchlaufen hat, damit er sie dann in der Email einfügen kann
Do Until rs.EOF
If tbl_inhalt = "" Then
tbl_inhalt = rs!Anrede & " " & rs!Empfängername
Else
tbl_inhalt = tbl_inhalt & vbCrLf & rs!Anrede & " " & rs!Empfängername
End If
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
'Erzeugt die Emailmessage
With mmessage
.Subject = "Umsätze" 'Betreff
.NoteText = tbl_inhalt 'Textinhalt
.MessageType = ""
.DateReceived = ""
.ConversationID = ""
.Flags = 0
.RecipCount = 0
.FileCount = 0
End With
'Hier wird die Email geöffnet
Senden = MapiSendMail(0, 0, mmessage, Recipient, File, MAPI_DIALOG Or MAPI_LOGON_UI Or MAPI_NEW_SESSION, 0)
If Senden <> 0 Then
MsgBox ("Fehler oder Nutzerabbruch")
ElseIf Senden = 0 Then
MsgBox ("Email erfolgreich versandt!")
End If

End Sub
 
Text ist wie der Name schon sagt ein Text.
Eine Tabelle kannst du nicht einfach per Fingerschnipp in einen Text umwandeln.
Hol dir bitte per Query die Daten die du brauchst, bastel dir daraus einen String mit Zeilenumbrüchen für die einzelnen Zeilen und versende dann diesen String.
Eine Tabelle kann von sich aus nicht zu einem Text werden. Wenn du Fachinformatiker bist, solltest du wissen, dass man mit Typecasting keine Wunder vollbringen kann.
VB(A) kann viel aber sowas nicht.

btw: bei den Empfängeradressen machst du das ja schon so ähnlich...

Viel Erfolg, Erazor
 
hallo,

auch wenn ich Fachinformatiker bin, muß ich dcoh nicht alles können/wissen oder?
ich bin noch in der Ausbildung.

Hab nun eine andere Frage zu dem sendobject.

Ich habe vorher ja eine Pass-Through Abfrage in ACcess gemacht, sie bringt mir Daten zurück, die ich ja versenden möchte. Damit er die Abfrage startet, holt er sich aus einer Tabelle Daten, wo unter anderem der Anforderer drin steht. Jetzt zum Versenden benötigt er die Emailadresse oder Handynummer, aus der Tabelle "Verteiler", in der auch der Anforderer steht. Das Problem ist nun dieses, er nimmt sich nur die oberste Emailadresse oder Handynummer, aber das möchte ich ja gar nicht.
Beispiel: er hat für die Abfrage den Datensatz zwei genommen, wo der Name Herr MÜller drin steht, diesen Namen sollte er dann auch nehmen, damit er die richtigeEmailadresse mache, wie mach ich das?

mein Code

If Ausgabemedium = "Email" Then
Set RS = CurrentDb.OpenRecordset("Verteiler", dbOpenDynaset)

DoCmd.SendObject acQuery, , , RS!Email, , , Betreff
ElseIf Ausgabemedium = "Handy" Then

Gruß Liebling
 
Hallo,

also das eine habe ich jetzt gelöst

Jetzt habe ich aber nun dieses Problem. Ich habe diesen Code

DoCmd.SendObject acQuery, , , Handynr

Der will auch eine Email schreiben, nur will er es als Anlage versenden, ist unpraktisch, da es auf ein handy geht, wie kann ich das anders lösen, dass er den Inhalt der Query in die Email schreibt???
Weiß das einer?

Gruß Liebling
 
Zurück
Oben