Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Serienbrief mittels Befehlsschaltfläche generieren
zurück: Kombinationsfeld über anderes Kombinationsfeld filtern weiter: Datenbank für Buchhaltung Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
MV
Gast


Verfasst am:
27. Mai 2004, 09:21
Rufname:

Serienbrief mittels Befehlsschaltfläche generieren - Serienbrief mittels Befehlsschaltfläche generieren

Nach oben
       

Guten Tag.

Ich verwalte eine große Anzahl von Kunden und möchte aus einem Eingabeformular heraus direkt mittls einer Befehlsschaltfläche die eingegebenen Daten in einen vorbereiteten Serienbrief übernehmen um diesen anschließend per Mail an die Kunden zu versenden.
Kann mir jemand bei meinem Problem helfen?
Vielen Dank.
faßnacht(IT);
www.Office-Loesung.de Administrator


Verfasst am:
31. Mai 2004, 12:27
Rufname: Peter


Serienbrief mit VBA - Serienbrief mit VBA

Nach oben
       

Das kann man recht einfach programmieren. Dazu muss man nur einige Punkte beachten:
1. Für den Einstieg in Word lohnt es sich oft Makros aufzuzeichnen. Wenn man sich die Makros genauer ansieht lernt man schnell das Objektmodell in Word kennen.
2. Um die Ausgabe von Access in Word zu steuern, sollte man zunächst ein Modul öffnen und im Menü EXTRAS - VERWEISE wählen. Da wählt man dann dann "Microsoft Word x.0 Object Library" aus.
Das x steht dabei für die verwendete Version.
3. Jetzt kann man anfangen zu programmieren, ein Beispiel:

Die folgende Funktion verbindet ein Hauptdokument mit einer Datenquelle in Access. Als Parameter braucht man:
docVorlage - ein Objekt vom Typ Worddokument
strDatenPfad - Enthält den Pfad zu Deiner MDB-Datei
strTabelle - enthält den Namen Deiner Tabelle oder Abfrage, die den Serienbrief füttern soll.
bDrucken - sollte normalerweise TRUE sein. Zum Testen sollte man aber false verwenden um Tinte zu sparen Wink
Code:
Function Brief_Erstellen(docVorlage As Word.Document, strDatenPfad As String, strTabelle As String, bDrucken As Boolean) As Boolean

Dim bErgebnis As Boolean, docAktiv As Word.Document

On Error GoTo Err_BriefDrucken
  bErgebnis = False
  With docVorlage.MailMerge                 '---Hauptdokument verbinden
    .OpenDataSource Name:=strDatenPfad, Connection:="TABLE " & strTabelle, _
                    SQLStatement:="SELECT * FROM [" & strTabelle & "]"
    .Destination = wdSendToNewDocument
    .MailAsAttachment = False
    .MailAddressFieldName = ""
    .MailSubject = ""
    .Execute 'Pause:=True
  End With
  Set docAktiv = docVorlage.Application.ActiveDocument
  If bDrucken Then
    With docAktiv                             '---Serienbrief Ausdrucken
      .PrintOut Item:=wdPrintDocumentContent, Copies:=1, _
        PageType:=wdPrintAllPages, Collate:=False, PrintToFile:=False
        'PrintToFile:=False,,Range:=wdPrintRangeOfPages,Pages:="1-2"
        'FileName:="",
      .Close wdDoNotSaveChanges
    End With
  End If
  bErgebnis = True
End_BriefDrucken:
  Set docAktiv = Nothing                    '---Aufräumen
  If Not docVorlage Is Nothing Then
    docVorlage.Close wdDoNotSaveChanges
  End If
  Brief_Erstellen = bErgebnis
  Exit Function
Err_BriefDrucken:
  Select Case Err.Number                    '---Fehlerbehandlung
  Case 0
  Case Else
    MsgBox "Fehler: " & Err.Number & vbNewLine & Err.Description, _
           vbInformation, "Fehler Hauptdokument"
    Set docVorlage = Nothing
    Resume End_BriefDrucken
  End Select
End Function
Um diese Funktion zu starten muss man zunächst Word als Objekt öffnen. Dazu die folgende Funktion, Parameter:
strPfadMain - ist der Pfad zum Word Hauptdokument
strPfadQuelle - enthält den Namen der Access-Datenbank
strAbfrage - ist der Name der Tabelle oder Abfrage
bDrucken - gibt an, ob der Serienbrief gedruckt (True) oder nur angezeigt werden soll (False)
Code:
Sub WordSerienBrief(strPfadMain As String, strPfadQuelle As String, strAbfrage As String, bDrucken As Boolean)

Dim docApp As Word.Application, docMain As Word.Document

On Error GoTo Err_WordAusgabe
    '--- Word Öffnen
  Set docApp = CreateObject("Word.Application")
  docApp.Visible = True
  Set docMain = docApp.Documents.Open(strPfadMain)
   '--- Funktion zum starten des Serienbriefes
  Call Brief_Erstellen(docMain, strPfadQuelle, strAbfrage, bDrucken)
End_WordAusgabe:
    '---Aufräumen
  Set docMain = Nothing
  If Not docApp Is Nothing Then
    If bDrucken Then
      docApp.Quit
    End If
    Set docApp = Nothing
  End If
  Exit Sub
Err_WordAusgabe:
    '---Fehlerbehandlung
  Select Case Err.Number
  Case Else
    MsgBox "Fehler: " & Err.Number & vbNewLine & Err.Description, _
           vbInformation, "Fehler in Excel-Ausgabe"
    Resume End_WordAusgabe
  End Select
End Sub
Aufruf geht so:
WordAusgabe "D:\Eigene\Test.doc", "D:\Eigene\DeineDB.mdb", "Deine_Abfrage", True
Der letzte Parameter sollte zum testen False sein, um den Drucker zu schonen ....

_________________
na, hilft das weiter?
ciao Smile
Peter Faßnacht
faßnacht(IT);
www.Office-Loesung.de Administrator


Verfasst am:
25. Jun 2004, 11:12
Rufname: Peter

Serienbrief per Mail - Serienbrief per Mail

Nach oben
       

Hallo Smile
Um den Serienbrief gleich per Mail zu verschicken kann man in der ersten Funktion den befehl:
Code:
.PrintOut Item:=wdPrintDocumentConte....
auskommentieren und statt dessen die Methode .SendMail verwenden!
Und etwas weiter oben die entsprchenden Parameter setzen:
Code:
    .MailAsAttachment = True
    .MailAddressFieldName = "Mail@Adresse.com"
    .MailSubject = "Hallo lieber Mailempfänger"

_________________
na, hilft das weiter?
ciao Smile
Peter Faßnacht
borstel
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. März 2005, 14:05
Rufname:

AW: Serienbrief mittels Befehlsschaltfläche generieren - AW: Serienbrief mittels Befehlsschaltfläche generieren

Nach oben
       

hallo peter,
ich suche schon längere zeit nach einer lösung für serienbriefe per email, daher reaktiviere ich diesen thread einfach mal.
wenn ich deine lösung richtig verstehe, werden alle generierten serienbriefe an diesselbe email-adresse geschickt.
ich suche jedoch eine lösung, bei der jeder serienbrief an eine andere mail geschickt wird, nämlich an die gespeicherte mail-adresse des briefempfängers.
geht das überhaupt und gibt es dafür eine lösung?
außerdem ist mir beim testen aufgefallen, dass der mail-versand offensichtlich nur über outlook funzt, ich benutze aber thunderbird und erhalte eine fehlermeldung (kein standard-mailprogramm gefunden, bitte outlook als standard....). hast du damit erfahrung?
ich könnte auch mit einer lösung leben, bei der diese serienbriefe aus access heraus versendet werden.
danke für die bemühungen

_________________
Gruß borstel
Windows 8 Pro 64 Bit - Office 2007
Positive und negative Rückmeldungen sind eine große Hilfe für alle Forumsteilnehmer!
faßnacht(IT);
www.Office-Loesung.de Administrator


Verfasst am:
18. März 2005, 15:22
Rufname: Peter

AW: Serienbrief mittels Befehlsschaltfläche generieren - AW: Serienbrief mittels Befehlsschaltfläche generieren

Nach oben
       

Hallo Smile
Ja, richtig. Da geht dann alles an den gelichen Empfänger.
Da wäre also noch amnches was man noch besser machen kann.

Meine Erfahrung beschränkt sich bisher aussschließlich auf den Versand mit Outlook. Andere Mailprogramme kann man möglicherweise verwenden, wenn es dazu ActiveX-Controls gibt. Im VBA-Editor unter dem Menü EXTRAS - VERWEISE... müsste dazu eine Auswahl-Möglichkeit für Thaunderbird da sein. gibt es sowas?
Grüße
Peter
borstel
Im Profil kannst Du frei den Rang ändern


Verfasst am:
21. März 2005, 18:55
Rufname:

AW: Serienbrief mittels Befehlsschaltfläche generieren - AW: Serienbrief mittels Befehlsschaltfläche generieren

Nach oben
       

Hallo peter,
tschuldiung, dass ich mich jetzt erst melde, komme gerade aus einem Wochenendkurzurlaub zurück.
Leider kann ich keine Verweis finden, weder für Mozilla noch für Thunderbird.
und nu?

_________________
Gruß borstel
Windows 8 Pro 64 Bit - Office 2007
Positive und negative Rückmeldungen sind eine große Hilfe für alle Forumsteilnehmer!
jkuny
Access ist zum Verzweifeln


Verfasst am:
06. Apr 2005, 14:43
Rufname:
Wohnort: Schwarzwald

AW: Serienbrief mittels Befehlsschaltfläche generieren - AW: Serienbrief mittels Befehlsschaltfläche generieren

Nach oben
       

Hallo Peter,

hab da noch ein Problem. in der Funktion „Brief_Erstellen“ beim „Hauptdokument verbinden“.
Wäre super nett wen du dir das mal anschauen könnest .
Code:
    With docVorlage.MailMerge
        '---Hauptdokument verbinden
        .OpenDataSource Name:=strDatenPfad, _
                        Connection:="Query " & strTabelle, _
                        SQLStatement:="SELECT * FROM [" & strTabelle & "]"
        .Destination = wdSendToNewDocument
        .MailAsAttachment = False
        .MailAddressFieldName = ""
        .MailSubject = ""
        .Execute 'Pause:=True
    End With

Und zwar brauche ich nur einen Datensatz dieser abfrage. Den einer bestimmten Charge.

Abfragenahme = Analysezertifikat_Word_Drucken
Felder = Charge, Datum, Haltbarkeit usw.

SQL Daten der Abfrage sind :
Code:
SELECT DISTINCTROW Chargen.[Ch-Bez], Chargen.[Bes-Land],
         Bulkware.Haltbarkeit, Sum(Chargen.Menge) AS [Summe  von  Menge],
         EtikettEmpfänger.Empfänger,
         Max(Bulkware.[Konfekt-Beginn]) AS [Max von Konfekt-Beginn]
FROM     Bulkware
         INNER JOIN (Chargen
                     INNER JOIN EtikettEmpfänger
                     ON Chargen.[Bes-Land] = EtikettEmpfänger.Land)
         ON Bulkware.Lieferscheinnr = Chargen.Lieferscheinnr
GROUP BY Chargen.[Ch-Bez], Chargen.[Bes-Land], Bulkware.Haltbarkeit,
         EtikettEmpfänger.Empfänger
HAVING   Chargen.[Ch-Bez]="502/502";

1. Kenne mich mit SQL nicht so aus. Wie muss ich das einbinden ??
2. Kann die Chargen Nr. durch eine variable ersetzt werden ?? z. B.
Code:
HAVING Chargen.[Ch-Bez]= GlobChargeBez;

Danke im Voraus J

Joachim
(Siehe auch Über eine Abfrage einen Word Serienbrief erstellen
Edit by Willi Wipp)

Zuletzt bearbeitet von jkuny am 08. Nov 2008, 21:29, insgesamt einmal bearbeitet
mafe
Gast


Verfasst am:
12. Apr 2005, 08:55
Rufname:


AW: Serienbrief mittels Befehlsschaltfläche generieren - AW: Serienbrief mittels Befehlsschaltfläche generieren

Nach oben
       

Hallo,

ich habe den oben angegebenen Code in mein Modul in Access kopiert und angepasst. Wenn ich folgende Zeile ausführen möchte:
Code:
    With docVorlage.MailMerge   '---Hauptdokument verbinden
        .OpenDataSource Name:=strDatenPfad, _
                        Connection:="TABLE " & strTabelle, _
                        SQLStatement:="SELECT * FROM [" & strTabelle & "]"

Dann öffnet sich ein Dialog (Datenverknüpfungeigenschaften). Wenn ich hier auf OK klicke, dann kommt die Fehlermeldung:
Zitat:
Die Datenbank wurde vom Benutzer 'XXX' auf Computer 'YYY' in einen Status versetzt, in dem sie nicht geöffnet oder gesperrt werden kann.

Ich möchte auf dieselbe Datenbank zugreifen, aus der heraus ich gerade arbeite. Ist das nicht möglich? Oder muss ich irgenwelche Einstellungen ändern?
Was mache ich falsch? Danke fü die Hilfe!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Suchen und Ersetzen mittels Suchwortlisten 17 orangeX2 1298 29. Nov 2008, 20:28
orangeX2 Suchen und Ersetzen mittels Suchwortlisten
Keine neuen Beiträge Access Tabellen & Abfragen: Serienbrief aus Access Anrede 2 GastTanja 813 04. Sep 2008, 09:01
GastTanja Serienbrief aus Access Anrede
Keine neuen Beiträge Access Tabellen & Abfragen: Formular: Befehlsschaltfläche mit Optionsfeldern 3 sindymindy 287 10. Jun 2008, 14:27
MAPWARE Formular: Befehlsschaltfläche mit Optionsfeldern
Keine neuen Beiträge Access Tabellen & Abfragen: SuchAbfrage, Einschränkung mittels Optionsfeldern 1 Jasmine82 582 03. Dez 2007, 12:22
Gast SuchAbfrage, Einschränkung mittels Optionsfeldern
Keine neuen Beiträge Access Tabellen & Abfragen: Module starten mittels Makro? 8 Thorstenr 11686 14. Feb 2007, 16:06
Thorstenr Module starten mittels Makro?
Keine neuen Beiträge Access Tabellen & Abfragen: Ja/Nein Abfrage für Befehlsschaltfläche 3 Maddin77 500 06. Feb 2007, 15:06
Maddin77 Ja/Nein Abfrage für Befehlsschaltfläche
Keine neuen Beiträge Access Tabellen & Abfragen: Button druckt Serienbrief aus die 2. 1 dorian_fahrenheit 494 31. Jan 2007, 16:35
Willi Wipp Button druckt Serienbrief aus die 2.
Keine neuen Beiträge Access Tabellen & Abfragen: Ersetzen von Schlüsseln durch Klartext mittels Hilfstabelle 13 Pecki75 790 02. Jan 2007, 13:59
Willi Wipp Ersetzen von Schlüsseln durch Klartext mittels Hilfstabelle
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage aus anderen Abfragen generieren (Problem!) 1 AndreM 685 30. Dez 2006, 14:29
AndreM Abfrage aus anderen Abfragen generieren (Problem!)
Keine neuen Beiträge Access Tabellen & Abfragen: Tabellenverknüpfung/Datenbankaufbau mittels VBA?! HELP!!! 3 Lelo 886 28. Nov 2006, 15:41
bogumiljackson Tabellenverknüpfung/Datenbankaufbau mittels VBA?! HELP!!!
Keine neuen Beiträge Access Tabellen & Abfragen: Pivotchartansicht mit Befehlsschaltfläche 1 Ratloser 399 28. Nov 2006, 14:06
-------- Pivotchartansicht mit Befehlsschaltfläche
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage mittels Abfrage beeinflussen 6 BLBGünter 497 28. Nov 2006, 13:42
BLBGünter Abfrage mittels Abfrage beeinflussen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel-Formeln