Der kan kun være et dokument aktivt ad gangen, men via VBA kan du styre arbejdet med alle de dokumenter, du ønsker...
Du kan f.eks. gøre noget i denne retning:
Gem hver af dine opsætninger til de forskellige typer dokumenter som skabeloner (3 eller flere - det har du måske allerede gjort) - her kaldt Skabelon1.dot, Skabelon2.dot og Skabelon3.dot. Opret i hver a skabelonerne Document Variables med enslydende navne (måske det, du allerede har gjort). I skabelonerne kan værdierne af disse variable være neutrale (f.eks. = navnet på variablen). Indsæt i dokumenterne felter af typen DocVariable, som skal hente værdierne af de forskellige variabler (måske det, du allerede har gjort). Disse værdier skal du så have udskiftet med det, du indtaster i din UserForm, og det kan du gøre efter disse principper:
Indsæt i din UserForm denne linje i en den procedure, der køres, når du f.eks. klikker på en CommandButton, "Opret og udskriv dokumenter" eller noget i den retning:
CreateDocsWithUserFormInput strVal1:=TextBox1.Value, strVal2:=TextBox2.Value, strVal3:=TextBox3.Value
Linjen kalder den makro, der er vist nedenfor, og den sender værdierne fra din UserForm med.
BEMÆRK: TextBox1, 2 og 3 er her dem, der indeholder de data, du vil have indsat.
Generelt er det en god idé at give alle Controls og variable sigende navne, men jeg har blot brugt neutrale navne her.
Indsæt så i koden under din UserForm eller i et alm. kode-modul i samme dokument/skabelon følgende makro (her lavet som en Function):
Function CreateDocsWithUserFormInput(strVal1 As String, strVal2 As String, strVal3 As String)
Dim oDoc As Document
Dim oArray As Variant
Dim n As Long
'Lav array med de 3 (eller flere) skabelonnavne - udskift med korrekte stier/navne
oArray = Array("C:\Skabelon1.dot", "C:\Skabelon1.dot", "C:\Skabelon3.dot")
'Opret 3 (eller flere) dokumenter på basis af dine skabeloner
'Opdater værdierne af variable
'Opdater felter
For n = LBound(oArray) To UBound(oArray)
'Opret dokument
Set oDoc = Documents.Add(Template:=oArray(n))
'Opdater variable
With oDoc
.Variables("Var1").Value = strVal1
.Variables("Var2").Value = strVal2
.Variables("Var3").Value = strVal3
'Opdater felter
.Fields.Update
'Print og luk uden at gemme - eller hvad du nu har brug for
.PrintOut
.Close savechanges:=wdDoNotSaveChanges
End With
Next n
'Ryd op
Set oDoc = Nothing
End Function
NB Hvis dine DocVariable felter findes andre steder end i hovedområdet af skabelonerne (f.eks. i hoved/fod), skal du sikre, at alle felter bliver opdateret. I stedet for blot ".Fields.Update" kan du bruge en makro, som opdatere alle felter. Du kan finde en sådan her:
http://wordblog.thedoctools.com/#post38