Opslaan in pdf

Status
Niet open voor verdere reacties.

arnoo7

Gebruiker
Lid geworden
24 nov 2014
Berichten
79
Een (dacht ik) simpele wens. Maar op 1 of andere manier doe ik iets fout.

Ik heb een wordsjabloon die ik vul vanuit een excel. Dus variabelen worden gevuld in excel. Vervolgens Word een document aangemaakt en gevuld. Daarna wil ik het bestand opslaan in een map.

Alle onderdelen lukken Maar het opslaan van het Wordbestand niet. Wel als ik het in een .doc doe maar niet als pdf. En dat is wat ik wil.

Heb zitten variëren met opslaan, export en printen maar doe blijkbaar nog iets fout.

Misschien weet iemand het direct al maar voor het beeld heb ik een voorbeeld bestandje gemaakt. Als je die beiden in een mapje zet moet het goed komen.

Super bedankt voor het meedenken.

Groet Arno

PS .dotx mag blijkbaar niet als bestandsformaat. Ik heb hem nu als docx geUpload. Om het te laten werken met je deze dus nog even opslaan als sjabloon.
 

Bijlagen

Laatst bewerkt:
Welke Word versie? Normaal gesproken kun je vanuit de nieuwere versies gewoon rechtstreeks opslaan als PDF. Dus wat heb je allemaal al geprobeerd?
 
Ik heb nog even naar je macro gekeken, en ik zag dat je geen Early Binding gebruikt (ook geen net samenvoegbestand overigens, maar blijkbaar hoeft dat niet) maar Late Binding, en dat is toch wat lastiger, omdat je dan geen controle/hulp hebt over de syntax. En als je die fout hebt, dan doet-ie het dus niet. Ik heb e.e.a. dus bij mij omgezet naar Early Binding, en dan krijg je dit als werkende code:

Code:
Sub Brief()

Dim wdApp As Word.Application, wdDoc As Word.Document
Dim myWordFile As String, Locatie As String, Naam As String, Bestand As String
  
    Locatie = ActiveWorkbook.Path & "/"
''    Locatie = LocalFullName(ActiveWorkbook.Path & Application.PathSeparator)
    Bestand = [Brief1]
    Naam = "testbestand"
    myWordFile = Locatie & Bestand
    Set wdApp = CreateObject("Word.Application")
    Set wdDoc = wdApp.Documents.Add(myWordFile)
    wdApp.Visible = True
    With wdDoc
        .Variables("Veld1").Value = [Veld1]
        .Variables("Veld2").Value = [Veld2]
        .Fields.Update
        .SaveAs Filename:=Locatie & Naam & ".docx"
        .ExportAsFixedFormat Locatie & Naam & ".pdf", wdExportFormatPDF
    End With
    Application.ScreenUpdating = False


End Sub

Ik vermoed ook nog dat je denkt dat je in één regel maar één keer het variabele type hoeft aan te geven ,want je had in die regel alleen Bestand als String gedefinieerd, terwijl alle drie de variabelen in die regel string zijn. Dat is dus een foute gedachte :).
 
Hoi Octafish,

Dank voor je hulp dit werkt goed. de toevoeging wdExportFormatPDF miste ik. Dan werkt het wel.

Heb inmiddels ook wat gegoogeld over de verschillen tussen early en late binding, leerzaam.

De code is idd niet zo netjes, ben niet zo gewend om met die with te werken. Ik zal de bestaande code ermee opschonen.

Die declaratie wist ik wel. Was even een slordigheid met een testbestandje in elkaar zetten.

Dank voor je hulp (en wijze les)

Groet Arno
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan