Dividere un documento di word in più files separati
Ho avuto la necessità di separare un documento word in file separati per ogni capitolo.
E’ interessate in questo caso usare una piccola macro in VBA (Visual Basic fo Applications) per implementare una funzione apposita in Word.
Sembra difficile ma in realtà è più semplice del previsto.
Vediamo come:
La funzione ci permetterà di selezionare una parte di testo e salvare in un file separato la porzione di testo.
La macro utilizzerà i primi 10 caratteri del testo selezionato per dare il nome al file.
Per creare la macro è sufficiente richiamare la finestra di gestione macro premendo i tati ALT + F8 contemporaneamente.
A questo punto possiamo inserire il nome della macro (nell’esempio l’ho chiamata Split) e premere Crea.
Apparirà il nome della funzione nell’editor Visual Basic, in cui inseriremo il codice:
Sub Split() If Selection.Words.Count > 0 Then 'Copia il testo selezionato Selection.Copy 'Apre un nuovo documento e incolla il testo copiato Dim objNewDoc As Document Set objNewDoc = Documents.Add Selection.Paste 'Prende i primi 10 caratteri e li usa per salvare il file Dim objFileName As Range Set objFileName = objNewDoc.Range(Start:=0, End:=10) 'Specifichiamo un percorso valido per non avere errori objNewDoc.SaveAs FileName:="C:\Users\user\Desktop\wordsplit\" & objFileName & ".docx" Else End If End Sub
A questo punto potremo salvare e chiudere l’editor.
Ora selezionando una parte di testo dal documento di Word e premendo nuovamente ALT + F8 potremo eseguire la Macro, che salverà automaticamente il nuovo file nel percorso specificato.
Questo articolo è stato tratto da questo in lingua inglese.
Un altro metodo interessante, che ci permette di specificare anche dei delimitatori preimpostati, potete trovarlo a questo indirizzo (sempre in inglese).
Sperando questo articolo vi possa essere utile vi invito a lasciare un commento sul blog.
Una chicca davvero interessante.
Io l’avrei modificata così:
– eliminare gli spazi nel nome file
– capitalizzare il nome file
😉
Ciao Roby