Talvolta si vuole riportare in un file Word del testo preso da altre fonti, quali, ad esempio, siti Web, email, file PDF o altre fonti ancora.
Spesso ci si ritrova con linee andate a capo non desiderate e magari anche con caratteri spuri che si devono poi eliminare in qualche modo per rendere più leggibile il tutto. Assai comune è avere un’interruzione di paragrafo alla fine di ogni riga all’interno di un paragrafo logico e due interruzioni di questo tipo tra paragrafi logici. Il testo ottenuto dal copia & incolla non può quindi essere formattato bene è tutta una serie di paragrafi di una riga. La presenza di tutti gli a capo si può vedere bene in Word configurandolo in modo da visualizzare i segni di formattazione(i.e. clic sul simbolo ¶ sulla barra degli strumenti sulla scheda Home per attivare/disattivare questa opzione).
Fare tutta questa pulizia a manina è certo possibile … ma non è proprio un lavoro edificante, tanto più se si tratta di un testo lungo!
Per fortuna esiste la possibilità in Word sia di utilizzare la funzionalità Sostituisci che appunto modifica del testo in un altro, con anche la possibilità di effettuare tale sostituzione per tutto il documento (Sostituisci tutto) – o per quella parte eventualmente selezionata – , dopo magari avere provato prima con una singola sostituzione!
Nel caso si desideri semplicemente sostituire dei CR (Carriage Return /ritorno a capo), LF (Line Feed/avanzamento linea) o tab, può essere sufficiente effettuare una sostituzione ricercando rispettivamente ^p ^l oppure ^t.
Si noti che il simbolo ^ (carat) si trova come <shift> 6 nella tastiera inglese e <shift> ì in quella italiana.

Tuttavia se la “pulizia” del testo indicata precedentemente non risulta sufficiente, come purtroppo spesso accade, si può allora ricorrere a eseguire un’opportuna macro che effettua più sostituzioni se opportune.
Se creare da zero una macro una può non essere banale (anche se spesso basta semplicemente sfruttare la funzionalità di Registra nella sezione Macro, che appunto consente di registrare delle azioni eseguite da interfaccia utente per poi poterle far ripetere automaticamente in altre occasioni), eseguirne una creata da altri risulta assai semplice.

In questo caso specifico un’ottima macro l’ho trovata in Cleaning up Text Pasted from Websites, E-mails, PDFs etc. (msofficeforums.com) per cui basta copiarla e andare a inserire quel codice nella creazione di una nuova macro che si può poi richiamare dal proprio Word.

Premendo il tasto Crea nella finestra di gestione Macro (che compare effettuando un doppio click sull’icona Macro del menù), si apre l’editor che consente di scrivere il codice da associare a quella nuova macro. Nel nostro caso sarà sufficiente copiare e incollare quel codice trovato nel forum!


Per chi interessasse, ecco il link relativo alla programmazione di Macro per Office: Office Visual Basic for Applications (VBA) reference | Microsoft Docs
Riportando quanto indicato in Cleaning up Text Pasted from Websites, E-mails, PDFs etc. (msofficeforums.com):
p che dice “La seguente serie di azioni wildcard di Trova/Sostituisci pulisce il testo incollato da e-mail, siti Web e così via, che inseriscono interruzioni di paragrafo alla fine di ogni riga. Si noti inoltre che il processo presuppone che vi siano almeno due interruzioni di paragrafo di questo tipo tra i paragrafi “reali”.
Per eseguire a wildcard di Trova/Sostituisci, aprire il dialogo Trova/Sostituisci, quindi fare clic su ‘Altro >>’ e, tra le ulteriori opzioni che compaiono, fare clic su quella ‘Usa caratteri jolly‘.

Find = [ ^s^t]{1,}^13
Replace = ^p
Find = ([!^13^l])([^13^l])([!^13^l])
Replace = \1 \3
Find = [^s ]{2,}
Replace = ^32
Find = ([a-z])-[ ^s]{1,}([a-z])
Replace = \1\2
Find = [^13^l]{1,}
Replace = ^p
Nota: a seconda delle impostazioni internazionali del sistema, potrebbe essere necessario sostituire tutte le virgole (,) nelle espressioni Find/Replace precedenti con punti e virgola (;).
Per esempio, [ ^s^t]{1,}^13 diventa [ ^s^t]{1;}^13
La macro seguente automatizza la sequenza Find/Replace di cui sopra, oltre a gestire eventuali problemi d’internazionalizzazione.
Sub CleanUpPastedText()
'Turn Off Screen Updating
Application.ScreenUpdating = False
Dim StrFR As String, i As Long
'Paired F/R expressions, each separated by |
StrFR = "[ ^s^t]{1,}^13|^p|([!^13^l])([^13^l])([!^13^l])|\1 \3|[^s ]{2,}| |([a-z])-[^s ]{1,}([a-z])|\1\2|[^13^l]{1,}|^p"
'Address any Internationalisation issues
If Application.International(wdListSeparator) = ";" Then
StrFR = Replace(StrFR, ",", ";")
End If
With ActiveDocument.Range.Find
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
'Process all F/R expressions
For i = 0 To UBound(Split(StrFR, "|")) Step 2
.Text = Split(StrFR, "|")(i)
.Replacement.Text = Split(StrFR, "|")(i + 1)
.Execute Replace:=wdReplaceAll
Next
End With
'Restore Screen Updating
Application.ScreenUpdating = True
End Sub
Su PC, vedere Installing Macros per saperne di più sull’istallazione di macro e loro utilizzo, mentre su Mac vedi Word:mac – Install a Macro
____
NOTA: Qualora nell’eseguire una macro appaia una finestra di popup, del Microsoft Visual Basic, Application Edition, che dice: “Le macro del progetto sono disattivate. Per informazioni si come attivare le macro, vedere la Guida in linea o la documentazione dell’applicazione host“, allora si deve procedere ad abilitare, almeno temporaneamente, l’esecuzione di macro non firmate, quali ad esempio quella che abbiamo appena creato noi:

Abilitare (temporaneamente) l’esecuzione di macro non firmate per quel progetto: File -> Opzioni -> Centro protezione -> Impostazioni centro protezione -> Impostazioni delle macro -> Abilita tutte le macro
_______________________
Link utili


Pingback: Come aggiungere i sottotitoli, anche in più lingue, a un proprio video su YouTube | Enzo Contini Blog