Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: Bernie110 am Oktober 04, 2012, 17:47:51

Titel: Abfrage in csv-Datei via Email verschicken
Beitrag von: Bernie110 am Oktober 04, 2012, 17:47:51
Hallo,

ich muss eine Csv Datei erstellen und diese per Email verschicken.
Hab jetzt hierzu nichts gefunden.

Ich hab eine Abfrage : QYR_SPEDITIONSDATEN

Die Daten der Abfrage müssen in eine CSV Datei und diese als Anhang per Email verschickt werden.


Wie man eine CSV DAtei abspeichert weiss ich :
DoCmd.TransferText acExportDelim, "Exportspezifikation_ QYR_SPEDITIONSDATEN", " QYR_SPEDITIONSDATEN", "L:\SPEDITIONEN\LISTEN.txt"

Soweit so gut, aber wie hänge ich diese Datei einfach an einen Email. .. also Outlook soll sich öffenen und die selbe Datei anhängen.

Danke für eure Antworten

Lg Bernie

Titel: Re: Abfrage in csv-Datei via Email verschicken
Beitrag von: bahasu am Oktober 04, 2012, 18:51:23
Hi Bernie,

heute mal nur ein paar Stichworte zum googlen, da keine Zeit für fertige Lösung.
Outlook-Email entwerfen mit:
Set Mail = Applikation.CreateItem(olMailItem)
   
Mail.Attachments.Add ... für Anhang.

Harald
Titel: Re: Abfrage in csv-Datei via Email verschicken
Beitrag von: Bernie110 am Oktober 05, 2012, 05:45:00
Hallo Harald,

ersteinmal danke.
Muss man die CSV Datei erst auf den Computer speichern oder kann man die erstellte CSV Datei gleich anhängen ?

Lg Bernie
Titel: Re: Abfrage in csv-Datei via Email verschicken
Beitrag von: database am Oktober 05, 2012, 08:19:57
Hallo,

Zitat...oder kann man die erstellte CSV Datei gleich anhängen

Wenn du die Datei mit der von dir erwähnten Funktion erzeugst ist sie ja physikalisch bereits am Rechner vorhanden.

Da die Angabe von 'FileName' in der TransferText-Funktion optional ist kannst du ja versuchen
die Funktioin ohne diese Angabe in der *.add - Methode von Harald anzuwenden.

Ich habe da aber so meine Zweifel, dass das so funktionieren wird.
Titel: Re: Abfrage in csv-Datei via Email verschicken
Beitrag von: Bernie110 am Oktober 05, 2012, 08:57:48
Hi Data,

d.h. abspeichern und dann senden oder ?

Gruss
Bernie
Titel: Re: Abfrage in csv-Datei via Email verschicken
Beitrag von: DF6GL am Oktober 05, 2012, 09:06:04
Hallo,


versteh die Frage  nicht..


Eine csv-Datei ist eine DATEI und wird unter der hier verwendeten Bedeutung  auf einem bestimmten Datenträger mit einem bestimmten Namen gespeichert , wie jede andere Datei auch..


Mit "...TransferText acExportDelim..."   wird eben eine solche csv-Datei erzeugt und gespeichert, die dann mittels der "Attachments.Add"-Methode an eine EMail (MailItem)  angehängt werden kann.


Titel: Re: Abfrage in csv-Datei via Email verschicken
Beitrag von: database am Oktober 05, 2012, 09:38:46
Hallo,

Zitatd.h. abspeichern und dann senden oder ?

JO

DoCmd.TransferText acExportDelim, "Exportspezifikation_ QYR_SPEDITIONSDATEN", " QYR_SPEDITIONSDATEN", "L:\SPEDITIONEN\LISTEN.txt"
... damit hast du ja die Datei schon erzeugt und gespeichert! (L:\SPEDITIONEN\LISTEN.txt)
und die hängst du mit der .add - Methode an die Mail.

Wenn du die Datei im Anschluß nicht mehr verwenden willst kannst du sie mit dem KILL-Befehl löschen.
Titel: Re: Abfrage in csv-Datei via Email verschicken
Beitrag von: Bernie110 am Oktober 05, 2012, 10:07:28
Hallo Ihr Beiden,

also ich habs jetzt so gelöst :
Zitat
gblLong1 = Me.LfdNr    '* Abfragekriterium für die Abfrage



DoCmd.TransferText acExportDelim, "Exportspezifikation_SPEDITION_EMONS_Excelliste", "QYR_SPEDITION_EMONS_Excelliste", "L:\SPEDITIONS_DFÜ\SPEDITION_DFÜ.txt"

MsgBox "Die Datei wurde auf dem Server L:\SPEDITIONS_DFÜ\SPEDITION_DFÜ.txt abgelegt!", vbInformation


Dim Email_verschickt_Check As String
Dim Email_verschickt_von As String

If Not IsNull(Me.CurrentUser) Then
Dim FilterSS As String
FilterSS = "[Login_Name]like '" & CurrentUser & "*'"
Email_verschickt_Check = DLookup("Email_Firma", "STAMM_Personal", FilterSS)
End If

If Not IsNull(Email_verschickt_Check) Then
Email_verschickt_von = Email_verschickt_Check
Else
Email_verschickt_von = "xxx@xxxx.de;xxxx@xxxxx.de"
End If


' Email verschicken
'----------------------------------------------------------------------------------------------------
If MsgBox("Wollen eine Email mit den DFÜ Daten verschicken?" _
            , vbQuestion + vbYesNo, "Bedienhinweis") = vbYes Then
Dim bStarted As Boolean
Dim oOutlookApp As Outlook.Application
Dim oItem As Outlook.MailItem
On Error Resume Next

Set oOutlookApp = GetObject(, "Outlook.Application")
If Err <> 0 Then
    Set oOutlookApp = CreateObject("Outlook.Application")
    bStarted = True
End If
Set oItem = oOutlookApp.CreateItem(olMailItem)
With oItem
    'An=""
    .To = Me.TU_Email
    'Kopieempfänger
    .CC = Email_verschickt_von
    'Betreff
    .Subject = "TEST SPEDITIONSAUFTRAG PER CSV DATEI: " & Me.TU_FirmenName1 & "  Ladedatum: " & Me.Ladedatum
    'Dokumentenname und Anzeigename in E-Mail
        .Attachments.Add Source:="L:\SPEDITIONS_DFÜ\SPEDITION_DFÜ.txt", Type:=olByValue, _
      DisplayName:="Konditionenverzeichnis562100 Ausland+RTGS"
      '.Attachments.Add Source:=ActiveDocument.FullName, Type:=olByValue, _
      'DisplayName:="Konditionenverzeichnis"
    .Send
   End With
If bStarted Then
    oOutlookApp.Quit
End If
Set oItem = Nothing
Set oOutlookApp = Nothing
MsgBox " DFÜ erfolgreich verschickt!"
Else
MsgBox " Sendevorgang wurde abgebrochen!", vbInformation
End If

oder ist das noch einfacher möglich ?

Danke für eure Antworten

gruss Bernie
Titel: Re: Abfrage in csv-Datei via Email verschicken
Beitrag von: DF6GL am Oktober 05, 2012, 12:15:11
Hallo,



nur auf den Code an sich eingehend:




DoCmd.TransferText acExportDelim, "Exportspezifikation_SPEDITION_EMONS_Excelliste", "QYR_SPEDITION_EMONS_Excelliste", "L:\SPEDITIONS_DFÜ\SPEDITION_DFÜ.txt"

' diesen Dateinamen würde ich nicht statisch angeben...


MsgBox "Die Datei wurde als auf dem Server L:\SPEDITIONS_DFÜ\SPEDITION_DFÜ.txt abgelegt!", vbInformation


Dim Email_verschickt_Check As String  Variant

Dim Email_verschickt_von As String

If Not IsNull(Me.CurrentUser) Then    ' ist das ein Formular-Textfeld? Oder soll das der eingeloggte User (Currentuser()-Funktion) sein?


Dim FilterSS As String
FilterSS = "[Login_Name] = '" & CurrentUser()  & "'"  'CurrentUser() liefert den Access-Einlog-Namen bei aktiviertem  Sicherheitssystem, ansonsten wird "Administrator" geliefert.
' Und warum mit LIKE vergleichen? Der Einlogname sollte GENAU einem registrierten Personalnamen entsprechen.

Email_verschickt_Check = DLookup("Email_Firma", "STAMM_Personal", FilterSS)
End If


If Not IsNull(Email_verschickt_Check) Then
Email_verschickt_von = Email_verschickt_Check
Else
Email_verschickt_von = "xxx@xxxx.de;xxxx@xxxxx.de"
End If


' Email verschicken
'----------------------------------------------------------------------------------------------------

Dim bStarted As Boolean
Dim oOutlookApp As Outlook.Application
Dim oItem As Outlook.MailItem

If MsgBox("Wollen eine Email mit den DFÜ Daten verschicken?" _
            , vbQuestion + vbYesNo, "Bedienhinweis") = vbYes Then
On Error Resume Next

Set oOutlookApp = GetObject(, "Outlook.Application")
If Err <> 0 Then
    Set oOutlookApp = CreateObject("Outlook.Application")
    bStarted = True
End If



Set oItem = oOutlookApp.CreateItem(olMailItem)
With oItem
    'An=""
    .To = Me.TU_Email
    'Kopieempfänger
    .CC = Email_verschickt_von
    'Betreff
    .Subject = "TEST SPEDITIONSAUFTRAG PER CSV DATEI: " & Me.TU_FirmenName1 & "  Ladedatum: " & Me.Ladedatum
    'Dokumentenname und Anzeigename in E-Mail
        .Attachments.Add Source:="L:\SPEDITIONS_DFÜ\SPEDITION_DFÜ.txt", Type:=olByValue, _   
      DisplayName:="Konditionenverzeichnis562100 Ausland+RTGS"

    ' Wie oben wäre eine Variable hier besser


      .Send
   End With
If bStarted Then
    oOutlookApp.Quit
End If
Set oItem = Nothing
Set oOutlookApp = Nothing
MsgBox " DFÜ erfolgreich verschickt!"   ' eine "DFÜ" kann man nicht verschicken....
Else
MsgBox " Sendevorgang wurde abgebrochen!", vbInformation
End If

Titel: Re: Abfrage in csv-Datei via Email verschicken
Beitrag von: Bernie110 am Oktober 08, 2012, 09:30:35
Super vielen Dank


Passt

Lg Bernie