Macro per conteggio occorrenze e numerazione parole

Anonimo
2023-04-28T08:28:37+00:00

Ciao a tutti, avrei necessità di una macro che faccia brevemente questo lavoro:

dato un testo word e definita una particolare parola contenuta nell'intero testo, la numeri.

Faccio un esempio, dato il seguente testo (perdonate la banalità):

"a me piace il succo di frutta perchè la frutta fa bene"

esegua questo lavoro:

"a me piace il succo di [P.1]frutta perchè la [P.2]frutta fa bene"

In sostanza, numerare in questo modo ogni singola parola uguale a frutta. Esiste qualcosa che fa al caso mio? Vi ringrazio in anticipo per l'aiuto

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

5 risposte

Ordina per: Più utili
  1. Anonimo
    2023-04-28T17:19:11+00:00

    Ciao Luigi M!

    Oh, fantastico!

    Siete i benvenuti.

    Migliori saluti Shakiru ·

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-04-28T17:17:47+00:00

    I problemi sono legati ad una errata gestione dei confronti delle stringhe. Ho modificato il codice come segue per gestire le eccezioni ed adesso funziona correttamente:

    Sub Gestione_Occorrenze()

    Dim searchWord As String 
    
    Dim replaceWord As String 
    
    Dim i As Long 
    
    Dim count As Long 
    
    Dim strl As Integer 
    
    Dim parola As String 
    
    Dim parola2 As String 
    
    searchWord = InputBox("Immettere la parola da cercare: ") 
    
    replaceWord = InputBox("Immettere l'etichetta: ") 
    
    For i = 1 To ActiveDocument.Range.Words.count 
    
        Rem MsgBox "Parola esaminata: " & ActiveDocument.Range.Words(i) & " parola da cercare :" & searchWord & " Lunghezza stringa " & Len(ActiveDocument.Range.Words(i)) - 1 & "Conteggio : " & count 
    
        str1 = Len(ActiveDocument.Range.Words(i)) - 1 
    
        parola2 = LCase(Left(ActiveDocument.Words(i), str1 + 1)) 
    
        Rem MsgBox "Parola esaminata: " & parola2 & " lunga " & Len(parola2) 
    
        If Left(ActiveDocument.Words(i), str1 + 1) = searchWorld Then 
    
           parola = LCase(Left(ActiveDocument.Words(i), str1 + 1)) 
    
          Else 
    
           parola = LCase(Left(ActiveDocument.Words(i), str1)) 
    
        End If 
    
        If parola = searchWord Then 
    
           count = count + 1 
    
           ActiveDocument.Range.Words(i) = "[" & replaceWord & "." & Str(count) & "]" & searchWord & " " 
    
           i = i + 5 
    
           Else 
    
           If parola2 = searchWord Then 
    
             count = count + 1 
    
             ActiveDocument.Range.Words(i) = "[" & replaceWord & "." & Str(count) & "]" & searchWord & " " 
    
             i = i + 5 
    
           End If 
    
         End If 
    
    Next i 
    
    MsgBox "Numero totale di occorrenze rilevate: " & count 
    

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-04-28T14:58:49+00:00

    Ciao Luigi M!

    Grazie per il feedback e mi dispiace davvero che la richiesta non sia ancora stata risolta.

    Sembra che il problema potrebbe essere con la riga in cui vengono eseguite la ricerca e la sostituzione. In VBA di Word la raccolta Words è di sola lettura, pertanto non è possibile modificare singole parole in un documento utilizzando questa raccolta.

    Si prega di provare questo: Sub NumberWords() Dim searchWord As String Dim replaceWord As String Dim i As Long Dim count As Long Dim currentWord As Range Chiedi all'utente di inserire la parola da cercare searchWord = InputBox("Immettere la parola da cercare:")

    Richiedi all'utente di inserire la parola sostitutiva replaceWord = InputBox("Immettere la parola sostitutiva:")

    Loop through each word in the document For i = 1 A ActiveDocument.Words.Count Imposta currentWord = ActiveDocument.Words(i) Se LCase(currentWord.Text) = LCase(searchWord) allora Increment the count and replace the word with the numered version conteggio = conteggio + 1 currentWord.Text = replaceWord & " [P." & count & "]" Fine Se Avanti i

    Display a message box with the total number of occurrences MsgBox "Numero totale di occorrenze: " & conteggio Fine sub

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2023-04-28T10:12:06+00:00

    ciao e grazie per la risposta. Qualcosa sembra non funzionare: non sembra trovare occorrenze pur valorizzando correttamente le variabili searchword e replaceword

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2023-04-28T09:35:14+00:00

    Ciao Luigi M!

    Prova questo codice: Sub NumberWords() Dim searchWord As String Dim replaceWord As String Dim i As Long Dim count As Long

    Chiedi all'utente di inserire la parola da cercare searchWord = InputBox("Immettere la parola da cercare:")

    Richiedi all'utente di inserire la parola sostitutiva replaceWord = InputBox("Immettere la parola sostitutiva:")

    Loop through each word in the document For i = 1 A ActiveDocument.Words.Count Se LCase(ActiveDocument.Words(i)) = LCase(searchWord) allora Increment the count and replace the word with the numered version conteggio = conteggio + 1 ActiveDocument.Words(i) = replaceWord & " [P." & count & "]" Fine Se Avanti i

    Display a message box with the total number of occurrences MsgBox "Numero totale di occorrenze: " & conteggio

    Fine sub

    Questo codice richiede all'utente di immettere la parola da cercare e la parola sostitutiva. Quindi esegue un ciclo tra ogni parola nel documento e controlla se la parola corrente corrisponde alla parola cercata. In tal caso, incrementa il conteggio e sostituisce la parola con la versione numerata.

    Il codice utilizza la funzione LCase per convertire le parole in minuscolo prima di confrontarle. Ciò rende la ricerca senza distinzione tra maiuscole e minuscole.

    Alla fine del ciclo, il codice visualizza una finestra di messaggio con il numero totale di occorrenze.

    Gentilmente fatemi sapere, se avete bisogno di ulteriore assistenza, sarò lieto di aiutarvi ulteriormente.

    Migliori saluti Shakiru ·

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    La risposta è stata utile?

    0 commenti Nessun commento