PDA

View Full Version : Word 2004 e sostituzione automatica


Massi91
04-05-2005, 19:12
Ciao a tutti!

ho una domanda che riguarda Word...

allora, io ho un documento lunghissimo, circa 300 pagine, e un casino di (1), (2), (3) e (4) da sostituire con le rispettive cifre, formattate come apice.

Ora non mi va certo di stare a selezionare ad una ad una la paroletta, cancellarla, sostituirla e formattarla, perciò (visto che la funzione "sostituisci" non funziona con i caratteri formattati come apici, o cmq formattati), se è possibile fare una macro che faccia questo tutto in automatico... finchè la macro deve sostituire un carattere non c'è problema, ma lo deve anche formattare correttamente...
grazie di tutto

Massi91
05-05-2005, 15:34
ho risolto il problema con una macro che ho creato aiutandomi con la funzione "registra macro" di Word, e devo dire che è abbastanza funzionante e veloce (ma non troppo)

posto qui il codice nel caso a qualcuno potesse servire... (attenzione che la probabilità di bloccarsi è molto alta, quindi conviene salvare ogni qualvolta la macro trova un nuovo carattere da sostituire e formattare...)


Sub FindAndReplace()
On Error GoTo SaveAndEnd
Dim BeginDoc As Boolean
BeginDoc = True
Dim Result As VbMsgBoxResult
Result = MsgBox("Le possibilità che Word si blocchi durante l'esecuzione di questa macro sono elevate. Si desidera salvare adesso?", vbYesNoCancel + vbExclamation, "Attenzione!")
If Result = vbYes Then
ThisDocument.Save
ElseIf Result = vbCancel Then
Exit Sub
Else
End If
On Error GoTo SaveAndEnd
For i = 1 To Len(ThisDocument.Content)
Selection.MoveLeft wdCharacter, 2, wdExtend
If BeginDoc = True Then
BeginDoc = False
Else
Selection.MoveStart wdCharacter, 1
End If
Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend
CheckText "(1)", "1", False
CheckText "(2)", "2", False
CheckText "(3)", "3", False
CheckText "(4)", "4", False
Next i
SaveAndEnd:
ThisDocument.Save
Exit Sub

End Sub


Private Sub CheckText(StringToFind As String, StringToReplace As String, SaveAfter As Boolean)
If Selection.Text = StringToFind Then
Selection.Text = StringToReplace
With Selection.Font
.Name = "Arial"
.Size = 10
.Underline = wdUnderlineNone
.UnderlineColor = wdColorAutomatic
.StrikeThrough = False
.DoubleStrikeThrough = False
.Outline = False
.Emboss = False
.Shadow = False
.Hidden = False
.SmallCaps = False
.AllCaps = False
.Color = wdColorOliveGreen
.Engrave = False
.Superscript = True
.Subscript = False
.Spacing = 0
.Scaling = 100
.Position = 0
.Kerning = 0
End With
If SaveAfter = True Then ThisDocument.Save
End If
End Sub



E un'altra cosa: il focus deve sempre averlo la finestra di word durante l'operazione seno' Word si bloccherà irrimediabilmente...

(appena verrà avviata la macro per sicurezza chiederà se si vuole continuare l'operazione salvando il documento immediatamente, annullare l'operazione o avviarla senza salvataggi)