sjobbels
Gebruiker
- Lid geworden
- 11 dec 2008
- Berichten
- 145
Hallo,
ik heb in mijn database een mailmerge gebouwd, die via een selectie in een formulier (zie bijlage) en een .dot file een normale mailmerge in word genereerd. Op basis van deze code wordt de mailmerge gestart:
Nu is er de vraag gekomen om op basis van deze form of een nieuw form een E-mail merge te maken. Dus dat de geselecteerde emailadressen in de 'To' balk van outlook komen. Hoe krijg ik dit voorelkaar?
thanks
ik heb in mijn database een mailmerge gebouwd, die via een selectie in een formulier (zie bijlage) en een .dot file een normale mailmerge in word genereerd. Op basis van deze code wordt de mailmerge gestart:
Code:
Option Compare Database
Option Explicit
Private Const conTemplate As String = "CSMailMerge.dot"
Private Const conQuery As String = "qryMailmerge"
Private Const conTabel As String = "tmp"
Dim strSQl As String
Private Sub cmdClear_Click()
strSQl = "UPDATE " & conQuery & vbCrLf
strSQl = strSQl & "SET Mailmerge = Null " & vbCrLf
strSQl = strSQl & "WHERE Mailmerge=True"
DoCmd.RunSQL strSQl
Me.Form.Requery
End Sub
Private Sub cmdSelect_Click()
strSQl = "UPDATE " & conQuery & vbCrLf
strSQl = strSQl & "SET Mailmerge = 1 " & vbCrLf
strSQl = strSQl & "WHERE Mailmerge=False"
DoCmd.RunSQL strSQl
Me.Form.Requery
End Sub
Private Sub cmdGo_Click()
DoCmd.SetWarnings False
strSQl = "SELECT NaamBedrijf, NaamLocatieDochter, CPAanhef, Aan, CPVoorletters, CPAchternaam, Adres, Postcode, Plaats, SalesManager, Telefoonnr, Mailmerge "
strSQl = strSQl & "INTO tmp " & vbCrLf
strSQl = strSQl & "FROM qryMailmerge " & vbCrLf
strSQl = strSQl & "WHERE (Mailmerge = True) " & vbCrLf
strSQl = strSQl & "ORDER BY NaamBedrijf;"
DoCmd.RunSQL strSQl
DoCmd.SetWarnings True
Call Samenvoegen
End Sub
Public Sub Samenvoegen()
Dim rs As ADODB.Recordset
Dim strPath As String
Dim strDataSource As String
Dim doc As Word.Document
Dim wrdApp As Word.Application
On Error GoTo HandleErrors
' Delete the rtf file, if it already exists.
strPath = FixPath(CurrentProject.Path)
strDataSource = strPath & conQuery & ".doc"
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM tmp", CurrentProject.Connection, adOpenStatic, adLockPessimistic
MsgBox "Aantal records: " & rs.RecordCount, vbOKOnly
If rs.RecordCount = 0 Then Exit Sub
' Export the data to rtf format
DoCmd.OutputTo acOutputTable, conTabel, acFormatRTF, strDataSource, False
' Start Word using mailmerge template
Set wrdApp = New Word.Application
Set doc = wrdApp.Documents.Add(strPath & conTemplate)
' Do the mail merge to a new document.
With doc.Mailmerge
.OpenDataSource Name:=strDataSource
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
If .State = wdMainAndDataSource Then
.Execute
End If
End With
' Display the mail merge document
wrdApp.Visible = True
ExitHere:
Set doc = Nothing
Set wrdApp = Nothing
Exit Sub
HandleErrors:
Select Case Err.Number
Case 53 ' File not found
Resume Next
Case Else
MsgBox Err.Number & ": " & Err.Description
Resume ExitHere
End Select
End Sub
Private Function FixPath(strPath As String) As String
If Right(strPath, 1) = "\" Then
FixPath = strPath
Else
FixPath = strPath & "\"
End If
End Function
Private Sub Form_Current()
Me.txtsubMail.Requery
If Me.txtsubMail.Value > 0 Then
Me.cmdGo.Enabled = True
Else
Me.cmdGo.Enabled = False
End If
Me.Form.Recalc
'' Me.Form.Requery
Me.Form.Refresh
Me.Form.Repaint
End Sub
Private Sub chkMailmerge_AfterUpdate()
If Me.Dirty Then
Me.Dirty = False
End If
Me.txtsubMail.Requery
If Me.txtsubMail.Value > 0 Then
Me.cmdGo.Enabled = True
Else
Me.cmdGo.Enabled = False
End If
'' Me.Form.Requery
Me.Form.Refresh
Me.Form.Repaint
End Sub
Nu is er de vraag gekomen om op basis van deze form of een nieuw form een E-mail merge te maken. Dus dat de geselecteerde emailadressen in de 'To' balk van outlook komen. Hoe krijg ik dit voorelkaar?
thanks
Bijlagen
Laatst bewerkt: