Opgelost Word sjabloon openen dit automatisch invullen en automatisch opslaan op locatie met specifieke bestandsnaam.

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

roycke

Gebruiker
Lid geworden
23 sep 2010
Berichten
99
Beste,

Met behulp van dit forum heb ik het volgende kunnen genereren:
Specifieke informatie word uit excel gekopieerd, een word sjabloon wordt geopend en ingevuld met behulp van doc variables. Dit ziet er als volgt uit:
Code:
Sub WordBR()
    Dim wordapp
    Dim strFile As String
    strFile = "K:\5. S&JT\5. Sjablonen\advies Brandveiligheid.dotx"
    Set wordapp = CreateObject("word.Application")
    wordapp.Documents.Open strFile, ReadOnly:=True
    wordapp.Visible = True

With GetObject(strFile)
    .variables("varNaam") = ['Startscherm'!aa2]
    .variables("zaaknr") = ['Startscherm'!ak2]
    .variables("inrichting") = ['Startscherm'!aa5]
    .variables("omschrijving") = ['Startscherm'!aa8]
    .variables("datum") = ['Brandveiligheid'!c2]
    .variables("adviseur") = ['Brandveiligheid'!g2]
    .Fields.Update
    .Windows(1).Visible = True
  End With
End Sub

De volgende automatisering is dat het document wordt opgeslagen op:
K:\5. S&JT\advies\

De naam van het bestand moet worden:
"het zaaknr. (dus de variables zaaknr) & advies brandveilgheid & docx.

ik heb verschillende opties geprobeerd maar helaas tergeefs.
(ik wil ze gerust hier plaatsen maar denk dat het alleen maar voor verwarring zorgt)

Alsvast bedankt.
 
Je bent (een beetje) verkeerd bezig, want je gebruikt het sjabloon op de verkeerde manier. Je moet de sjabloon niet openen, maar een nieuw document maken op basis van de sjabloon, anders kan je net zo goed een document openen en bewerken. En dat zou dus zo moeten:

Code:
Sub WordBR()
Dim wApp As Word.Application
Dim wDoc As Word.Document
Dim strFile As String
 
    strFile = "K:\5. S&JT\5. Sjablonen\advies Brandveiligheid.dotx"
    Set wApp = CreateObject("Word.Application")
    Set wDoc = wApp.Documents.Add(Template:=strFile, NewTemplate:=False, DocumentType:=0)
    wApp.Visible = True

    With wDoc
        .Variables("varNaam") = ['Startscherm'!aa2]
        .Variables("zaaknr") = ['Startscherm'!ak2]
        .Variables("inrichting") = ['Startscherm'!aa5]
        .Variables("omschrijving") = ['Startscherm'!aa8]
        .Variables("datum") = ['Brandveiligheid'!c2]
        .Variables("adviseur") = ['Brandveiligheid'!g2]
        .Fields.Update
        .Windows(1).Visible = True
      End With
End Sub

Nieuwe documenten krijgen geen naam, en die moet je dus meegeven bij het opslaan van het document. Je zou er nog voor kunnen kiezen het nieuwe document gelijk op te slaan en de opgeslagen naam verder te gebruiken.
 
ok thankx! dan ga ik dat al aanpassen en testen.
En hoe laat ik dit document gelijk opslaan met als eerste het : zaaknr" in de bestandsnaam?
 
ik krijg hier de volgende foutmelding op:
Dim wDoc As Word.Document met fout "een door de gebruiker gedefineerd gegevsn type is niet gedefineerd"

Ps. deze VBA staan in het XLS bestand en we gebruiken office 2019.
 
Laatst bewerkt:
Ik gebruik altijd (voor logische redenen) Early Binding. Dat werkt veel beter als Late Binding, maar je moet dus wél de Word bibliotheek laden. Alternatief is dus Late Binding, met deze variabelen:
Code:
Dim wApp As Object
Dim wDoc As Object
 
dat is een restrictie van onze ict afdeling....Hier willen ze ook niks aan veranderen...helaas.
met mijn eigen code heb ik het nu werkend.
Code:
  WordApp.ActiveDocument.SaveAs2 Filename:="K:\5. S&JT\1. Disciplines\Bouwen\@Toetsing vergunningen\Advies brandveiligheid\test.doc"
Echter de file die nu wordt opgeslagen is "statisch": test.doc
Hoe krijg ik het dynamisch? dus dat er ipv "TEST" de waarde komt te staan van:
.Variables("zaaknr") = ['Startscherm'!ak2]
 
Dan krijg je zoiets:
Code:
Sub WordBR()
Dim WordApp As Word.Application
Dim wDoc As Word.Document
Dim strFile As String, strTemp As String
    
    strTemp = "K:\5. S&JT\5. Sjablonen\advies Brandveiligheid.dotx"
    strFile = "K:\5. S&JT\1. Disciplines\Bouwen\@Toetsing vergunningen\Advies brandveiligheid\"
    
    Set WordApp = CreateObject("Word.Application")
    Set wDoc = WordApp.Documents.Add(Template:=strTemp, NewTemplate:=False, DocumentType:=0)
    WordApp.Visible = True

    With GetObject(strFile)
        .Variables("varNaam") = ['Startscherm'!aa2]
        .Variables("zaaknr") = ['Startscherm'!ak2]
        .Variables("inrichting") = ['Startscherm'!aa5]
        .Variables("omschrijving") = ['Startscherm'!aa8]
        .Variables("datum") = ['Brandveiligheid'!c2]
        .Variables("adviseur") = ['Brandveiligheid'!g2]
        .Fields.Update
        .Windows(1).Visible = True
        strFile = strFile & .Variables("zaaknr") & ".docx"
    End With
    WordApp.ActiveDocument.SaveAs2 FileName:=strFile

End Sub
 
thankx!
ik kreeg weer foutmeldingen bij de 1e regels heb hem dus herschreven. Het werkt nu. dankjewel voor de input!
 
Logisch, want ik heb dus Early Binding :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan