Printen naar meerdere bestanden vanuit 1 document

Status
Niet open voor verdere reacties.

1Erik

Nieuwe gebruiker
Lid geworden
6 aug 2018
Berichten
4
Hallo,
Vanuit een samengevoegd word bestand, wil ik graag meerdere documenten creeëren. Ik begreep dat dit middels een VBA kan. In een eerdere vraag hierover (16 feb 2011) in dit forum is ook een VBA gegeven.
Dit werkte bij mijn bestand in Word 2016 helaas niet (beveiliging en foutmelding).
Een andere VBA wel, alleen in de nieuwe documenten is de layout verdwenen, alleen de inhoud tekst wordt weergegeven. Iemand een idee hoe dit kan? Mijn VBA kennis is helaas erg laag..
Hieronder de gebruikte VBA:

Sub SplitNotes(delim As String, strFilename As String)
Dim doc As Document
Dim arrNotes
Dim I As Long
Dim X As Long
Dim Response As Integer
arrNotes = Split(ActiveDocument.Range, delim)
Response = MsgBox("This will split the document into " & UBound(arrNotes) + 1 & " sections.Do you wish to proceed?", 4)
If Response = 7 Then Exit Sub
For I = LBound(arrNotes) To UBound(arrNotes)
If Trim(arrNotes(I)) <> "" Then
X = X + 1
Set doc = Documents.Add
doc.Range = arrNotes(I)
doc.SaveAs ThisDocument.Path & "" & strFilename & Format(X, "000")
doc.Close True
End If
Next I
End Sub
Sub test()
'delimiter & filename
SplitNotes "///", "Notes "
End Sub

Alvast bedankt voor meedenken
 
Wat mankeert er aan mijn macro (Splitter)? Een samengevoegd document is per definitie een nieuw document, en derhalve nooit beveiligd. Ik snap je probleem niet.
Overigens hebben we voor VBA code een CODE tag (knop #) zodat je code er een stuk leesbaarder uitziet. Mocht je tijd hebben: even je berichtje bewerken en de codetag alsnog op de selectie loslaten :).
 
Ok bedankt voor snelle reactie. Eerst hieronder de VBA met de code opmaak. Deze VBA leidt dan wel naar gescheiden word documenten, echter layout verdwijnt.

Code:
Sub SplitNotes(delim As String, strFilename As String)
Dim doc As Document
Dim arrNotes
Dim I As Long
Dim X As Long
Dim Response As Integer
arrNotes = Split(ActiveDocument.Range, delim)
Response = MsgBox("This will split the document into " & UBound(arrNotes) + 1 & " sections.Do you wish to proceed?", 4)
If Response = 7 Then Exit Sub
For I = LBound(arrNotes) To UBound(arrNotes)
If Trim(arrNotes(I)) <> "" Then
X = X + 1
Set doc = Documents.Add
doc.Range = arrNotes(I)
doc.SaveAs ThisDocument.Path & "" & strFilename & Format(X, "000")
doc.Close True
End If
Next I
End Sub
Sub test()
'delimiter & filename
SplitNotes "///", "Notes "
End Sub
 
Vervolg op je vragen. Je macro is uitstekend; het werkt bij meerdere gebruikers. Alleen bij mij niet :( . Met beveiliging bedoel ik dat ik een melding krijg 'Geen toegang tot Word. Neem contact op met uw beheerder'. Vervolgens klik ik op Ok. Ik krijg dan een foutmelding 'Fout 4198 tijdens uitvoering'. Mogelijk in het wegschrijven naar een directory?. Ik kan echter de VBA (leek zijnde) niet goed genoeg lezen. Voor de volledigheid hierbij de VBA zoals die door jou was gepost en highlight waar de foutopsporing mee komt en dan specifiek weer de laatste regel daarvan. Ik probeer morgen via laptop (niet via netwerk) de VBA uit te voeren. Mogelijk dat de beveiliging dan geen issue is.
Schept dit meer duidelijkheid in mijn vraag en zie je hier een oplossing? Thnks!

Code:
Sub Splitter()
' splitter Macro
' Macro created by Doug Robbins to save each letter created by a mailmerge as a separate file.
Dim Letters As Integer, Counter As Integer
Dim DocName As String, sDoc As String

sDoc = "Brief "

Letters = ActiveDocument.Sections.Count
Selection.HomeKey Unit:=wdStory
Counter = 1
While Counter < Letters
    DocName = sDoc & LTrim$(Str$(Counter))
    ActiveDocument.Sections.First.Range.Cut
    Documents.Add
    Selection.Paste
    ActiveDocument.Sections(2).PageSetup.SectionStart = wdSectionContinuous
    [highlight]ActiveDocument.SaveAs FileName:=DocName, FileFormat:=wdFormatDocument, LockComments:=False, _
        Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
        EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, _
        SaveFormsData:=False, SaveAsAOCELetter:=False[/highlight]
    ActiveWindow.Close
    Counter = Counter + 1
Wend

End Sub
 
vraag opgelost

Vraag is opgelost.
Op lokale PC werkte de laatste macro wel. Aanvullend specifiek gemaakt (opslagnaam/adres) voor mijn gebruik. Op netwerk in vertrouwenscentrum gekeken naar instelling. Niet iets veranderd maar plots werkt het daar ook.
Bijzonder. Bedankt voor input.

erik
 
Netwerk problemen zijn bijzonder lastig en irritant en voor ons lastig op te lossen, omdat wij (logisch) niet op dat netwerk kunnen kijken. Dus daarom is het lastig te zien waarom een bepaalde macro die het bij mij prima doet, bij jou niet werkt. Maar mooi dat het toch is opgelost!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan