|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Registered User
Iscritto dal: Apr 2005
Messaggi: 56
|
Word 2004 e sostituzione automatica
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 |
![]() |
![]() |
![]() |
#2 |
Registered User
Iscritto dal: Apr 2005
Messaggi: 56
|
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...) Codice:
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 (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) Ultima modifica di Massi91 : 05-05-2005 alle 14:47. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:49.