Word, bestandsnaam opslaan met behulp van macro

Status
Niet open voor verdere reacties.

LittleEef

Nieuwe gebruiker
Lid geworden
8 feb 2017
Berichten
1
Beste helpers,

Ik heb een Word- bestand voor facturatie. Ik laat een aantal velden automatisch invullen dmv Verzendlijsten, met een database in Excel (Waar alle gegevens die op de factuur moeten in staan).
Nu wil ik dat bij ‘Opslaan als’ de bestandsnaam gelijk ingevuld wordt. Die naam is uiteraard variabel en moet overgenomen worden uit het Word-bestand.
Ik ben niet zo bekend met macro’s, maar met wat plak- en kunstwerk van internet heb ik het volgende macro kunnen creëren:

Sub SaveEachDocument()
Dim x As String
Application.DisplayAlerts = False
Application.ScreenUpdating = False
x = "C:\Users\mijnnaam"
With ActiveDocument.MailMerge.DataSource
ActiveDocument.SaveAs x & "Factuur " & .DataFields("NAAM") & " " & .DataFields("FACTUURNR") & .DataFields("BEHANDELDD\@ "dd-MM-yyyy"")
.ActiveRecord = 1
End With
Application.DisplayAlerts = True
End Sub

Dit werkt prima behalve als ik & .DataFields("BEHANDELDD\@ "dd-MM-yyyy"") eraan toevoeg in de macro zoals hierboven. Wat tussen de haakjes staat heb ik letterlijk overgenomen uit het veld in Word. De veldcode in Word is {MERGEFIELD BEHANDELDD\@ “dd-MM-yyyy”}.

Als ik de macro uitvoer dan krijg ik een error: compileerfout syntaxisfout.

Weet iemand hoe ik dit kan oplossen?
Mijn dank is groot!
 
Allereerst welkom bij HelpMij. Code ziet er veel beter uit als je die opmaakt met de CODE knop (knp #), dus graag als je de volgende keer weer code post, die code opmaken met de knop.
Om je een antwoord te geven: opmaken van velden kun je het beste in VBA doen, en niet in het document als je de waarden wilt gebruiken in je code. Dan krijg je zoiets:

Code:
Sub SaveEachDocument()
Dim x As String
    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
        x = "C:\Users\mijnnaam"
        With ActiveDocument
            .MailMerge.DataSource
            .SaveAs x & "Factuur " & .DataFields("NAAM") & " " & .DataFields("FACTUURNR") & Format(.DataFields("BEHANDELD"), "dd-MM-yyyy")
            .ActiveRecord = 1
        End With
        .DisplayAlerts = True
    End With
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan