Macro per sostituzione su tutto un file word

Anonimo
2011-05-12T22:16:38+00:00

Ho registrato una macro che individua una particolare stringa di testo all'inizio di una riga e quindi formatta tutta la linea con uno stile TITOLO2 quindi avanza alla riga successiva. Tuuto ok solo che ora vorrei poter lanciare questa macro in modo che automaticamente dall'inizio del documento fino alla fine elabori in modo da individuare le oltre 800 ricorrenze presenti nel file. Non volevo lanciare manualmente 800 volte la macro. Come si deve intervenire sul codice in modo da automatizzare questa ricerca su tutto il file?

Grazie

Microsoft 365 e Office | Word | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2011-05-13T16:28:16+00:00

Penso sia un buon punto di partenza la tua proposta. Il mio codice macro verifica l'inizio di un pragrafo e se trova la stringa richiesta mette in stile titolo2 tutto il paragrafo e poi avanza di paragrafo. Non riesco a capire come verifica che è arrivato a fine documento.

Comunque ecco qua il codice della mia macro...Grazie

Sub BOB2()

    Selection.Find.ClearFormatting

    With Selection.Find

        .Text = "/* Table [TEST"

        .Replacement.Text = ""

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchWildcards = False

        .MatchSoundsLike = False

        .MatchAllWordForms = False

    End With

    Selection.Find.Execute

    Selection.EndKey Unit:=wdLine, Extend:=wdExtend

    Selection.Style = ActiveDocument.Styles("Nessuna spaziatura")

    Selection.Style = ActiveDocument.Styles("Titolo 2")

    Selection.HomeKey Unit:=wdLine

    Selection.MoveDown Unit:=wdLine, Count:=1

End Sub

Questo sembra fare quanto mi sembra tu voglia:

Public Sub m()

     Dim par As Paragraph

     Dim rng As Range

     For Each par In ThisDocument.Paragraphs

         Set rng = par.Range

             If Left(rng.Text, 5) = "Mauro" Then

                rng.Style = ActiveDocument.Styles("Titolo 2")

            End If

     Next

     Set rng = Nothing

     Set par = Nothing

 End Sub

Questa è la parte da modificare il base alla/e parole/parole che si trovano ad inizio paragrafo.

Left(rng.Text, 5) = "Mauro"

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

6 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2011-05-13T15:33:10+00:00

    Penso sia un buon punto di partenza la tua proposta. Il mio codice macro verifica l'inizio di un pragrafo e se trova la stringa richiesta mette in stile titolo2 tutto il paragrafo e poi avanza di paragrafo. Non riesco a capire come verifica che è arrivato a fine documento.

    Comunque ecco qua il codice della mia macro...Grazie

    Sub BOB2()

        Selection.Find.ClearFormatting

        With Selection.Find

            .Text = "/* Table [TEST"

            .Replacement.Text = ""

            .Forward = True

            .Wrap = wdFindContinue

            .Format = False

            .MatchCase = False

            .MatchWholeWord = False

            .MatchWildcards = False

            .MatchSoundsLike = False

            .MatchAllWordForms = False

        End With

        Selection.Find.Execute

        Selection.EndKey Unit:=wdLine, Extend:=wdExtend

        Selection.Style = ActiveDocument.Styles("Nessuna spaziatura")

        Selection.Style = ActiveDocument.Styles("Titolo 2")

        Selection.HomeKey Unit:=wdLine

        Selection.MoveDown Unit:=wdLine, Count:=1

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2011-05-13T12:28:56+00:00

    Sembra funzionare solo che arrivato alla fine del file ricomincia dall'inizio. Ci vorrebbe un controllo della fine del file che chiuda la procedura. Mi puoi dire come fare?

    Grazie intanto

    Io non so cosa fa il tuo codice. Non lo hai postato. Quello postato da me, cicla i paragrafi. Questo codice, ad esempio, clicla tutti i paragrafi e se trova la parola Capitolo mette il paragrafo in grassetto:

    Public Sub m()

        Dim par As Paragraph

        Dim rng As Range

        Dim lng As Long

        lng = 1

        For Each par In ThisDocument.Paragraphs

            Set rng = ActiveDocument.Range( _

                Start:=ActiveDocument.Paragraphs(lng).Range.Start, _

                End:=ActiveDocument.Paragraphs(lng).Range.End)

            If InStr(rng.Text, "Capitolo") Then

                rng.Bold = True

            End If

            lng = lng + 1

        Next

        Set rng = Nothing

        Set par = Nothing

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2011-05-13T11:46:20+00:00

    Sembra funzionare solo che arrivato alla fine del file ricomincia dall'inizio. Ci vorrebbe un controllo della fine del file che chiuda la procedura. Mi puoi dire come fare?

    Grazie intanto

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2011-05-13T06:58:13+00:00

    Ho registrato una macro che individua una particolare stringa di testo all'inizio di una riga e quindi formatta tutta la linea con uno stile TITOLO2 quindi avanza alla riga successiva. Tuuto ok solo che ora vorrei poter lanciare questa macro in modo che automaticamente dall'inizio del documento fino alla fine elabori in modo da individuare le oltre 800 ricorrenze presenti nel file. Non volevo lanciare manualmente 800 volte la macro. Come si deve intervenire sul codice in modo da automatizzare questa ricerca su tutto il file?

    Grazie

    Se(se) hocapito quello che vuoi fare e se(se) per riga intendi un nuovo paragrafo(hai dato invio a capo):

    Public Sub m()

        Dim par As Paragraph

        For Each par In ThisDocument.Paragraphs

            'tuo codice

        Next

        Set par = Nothing

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento