individuele pdf's vanuit word maken

Status
Niet open voor verdere reacties.

brunofernagut

Nieuwe gebruiker
Lid geworden
20 mei 2009
Berichten
2
Ik ben op zoek naar een manier of software dit het volgende mogelijk maakt.

Ik vertrek vanuit een databankje met individuele klantnummers. Die gebruik ik als basis voor brieven afdrukken vanuit verzendlijst in Word. Ik zou vervolgens graag voor elke afzonderlijke brief een pdf creëren waarvan de naam bestaat uit de inhoud van de velden van de databank. Dus bijvoorbeeld het nummer van de klant, en de naam.

dus:
124-boerjan.pdf
125-piaf.pdf
126-donker.pdf

enz...

waarbij het aantal pagina's bepaald wordt door de verzendlijst in word.
 
Dat is best mogelijk; hangt een beetje van je Office versie af of dat ingewikkeld wordt of niet. In 2010 en hoger zit pdf uitvoer standaard ingebakken, dus dan kun je simpel exporteren. Enige probleem is dat je met een macro de verschillende bestanden uit elkaar moet trekken. En dan heb je niks aan je veldinformatie, omdat in het samengevoegde document geen veldcodes meer staan. Ik heb een macro (die je heel vaak tegenkomt als je hier op zoekt) bewerkt zodat de macro elk document opslaat onder de naam van de eerste alinea, wat meestal een veldgegeven is. Wellicht heb je daar wat aan als basis.

Code:
Sub Splitter()
'------------------------------------------------------------------------------------------------------------------
' splitter Macro
' Macro created by Doug Robbins to save each letter created by a mailmerge as a separate file.
' 'Mutulated' by Octafish to add first paragraph to DocName.
'------------------------------------------------------------------------------------------------------------------
Dim Letters As Integer, Counter As Integer
Dim DocName As String, sRange As String
Dim Pad As String, sNullen As String
Dim aRange As Range

DocName = "Brief  "
Pad = "H:\Temp\Word\"

Letters = ActiveDocument.Sections.Count
For Counter = 1 To Len(Letters)
    sNullen = sNullen & "0"
Next Counter
sNullen = sNullen & "0"

Selection.HomeKey Unit:=wdStory
Counter = 1
While Counter < Letters
    '-----------------------------------------------------------------------------
    'Naam samenstellen op basis van nummering
    '-----------------------------------------------------------------------------
    DocName = Right(sNullen & LTrim$(Str$(Counter)), Len(Letters) + 1) & "_"
    '-----------------------------------------------------------------------------
    ActiveDocument.Sections.First.Range.Cut
    Documents.Add
    Selection.Paste
    '-----------------------------------------------------------------------------
    'Naam samenstellen uit 1e alinea van tekst
    '-----------------------------------------------------------------------------
    Set aRange = ActiveDocument.Paragraphs(1).Range
    DocName = DocName & aRange.Text
    If Right(DocName, 1) = Chr(13) Or Right(DocName, 1) = Chr(10) Then
        DocName = Left(DocName, Len(DocName) - 1)
    End If
    '-----------------------------------------------------------------------------
    'Bestand opslaan
    '-----------------------------------------------------------------------------
    ActiveDocument.Sections(2).PageSetup.SectionStart = wdSectionContinuous
    ActiveDocument.SaveAs FileName:=Pad & DocName & ".doc", _
        FileFormat:=wdFormatDocument, LockComments:=False, _
        Password:="", AddToRecentFiles:=True, WritePassword:="", _
        ReadOnlyRecommended:=False, _
        EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, _
        SaveFormsData:=False, SaveAsAOCELetter:=False
    ActiveWindow.Close
    Counter = Counter + 1
    '-----------------------------------------------------------------------------
Wend

End Sub
 
Laatst bewerkt:
ik kreeg hier eerder al een oplossing aangeboden, maar ik zou willen vertrekken vanaf de databank die achter de verzendlijst vertrekt: de waarde die elk record heeft, moet in de naam van de pdf terecht komen: er moet dus wellicht met wat sql worden gewerkt. In access kon ik dit reeds, maar ik zou dit willen toepassen in word. Hieronder de code uit access:


Option Compare Database
Option Explicit

Private Sub Knop1_Click()
Dim rstClient As DAO.Recordset, mySQL As String, myClient As String ,strPad As String
Dim fs, fl As Object, datTimer As Date

Set fs = CreateObject("scripting.filesystemobject")

mySQL = "SELECT [NR_LANDBOUWER],[NAAM] FROM [qry_printlijst] "
'where nr_landbouwer = " & 3201017073# & ";"
Set rstClient = CurrentDb.OpenRecordset(mySQL)

Do Until rstClient.EOF
strPad = "c:\brieven"


DoCmd.OpenReport "Brief_met_balans", acViewPreview, , "[NR_LANDBOUWER]=" & rstClient![NR_LANDBOUWER]
datTimer = Time + TimeSerial(0, 0, 1)
Do Until datTimer < Time
Loop
If fs.FileExists(strPad & "\" & rstClient![NR_LANDBOUWER] & " " & rstClient![NAAM] & ".pdf") Then
MsgBox (rstClient![NR_LANDBOUWER] & rstClient![NAAM] & ".pdf" & " bestaat al")
Else
DoCmd.OutputTo acOutputReport, "Brief_met_balans", acFormatPDF, strPad & "\" & rstClient![NR_LANDBOUWER] & "-2010-B-" & rstClient![NAAM] & ".pdf"
End If

DoCmd.Close acReport, "Brief_met_balans"

rstClient.MoveNext
Loop
rstClient.Close

Set rstClient = Nothing
mySQL = " "


End Sub
 
Laatst bewerkt:
Doe ons een lol en doe twee dingen:
1. Haal die quoot weg, want dit is natuurlijk geen quoot meer, dit is gewoon (en behoorlijk zinloos) een compleet bericht herhalen.
2. Doe als ik, en maak de code netjes op met de CODE knop. Die zit er niet voor niks ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan