Modifica di stringhe seguite da un segno di punteggiatura in Microsoft Word [chiuso]


0

Ho un documento di Microsoft Word con due sezioni di testo. La prima è in forma di paragrafo, la seconda è quella forma di paragrafo suddivisa in segmenti e inserita in una tabella senza segni di punteggiatura. C'è una funzione che posso usare in modo che:

  • Se : Nel testo punteggiato, una sezione è seguita da un segno di punteggiatura,
  • Poi : Nel testo non punteggiato all'interno della tabella, viene aggiunta la punteggiatura.

Se ciò non è possibile in Microsoft Word, ci sono altri strumenti suggeriti per raggiungere questo obiettivo?

Ecco uno screenshot di Microsoft Word per illustrare il mio problema.

Here is an image illustrating task


2
Per sezione intendi una sezione di parole? Con un segno di punteggiatura, uomini ogni paragrafo finisce in un periodo? Hai uno screenshot che puoi includere con la tua domanda? È molto più utile vedere cosa stai cercando di descrivere.
Rich Michaels

Ciao ricco, ho aggiunto un'immagine.
bpb

1
@ bpb Cosa, se non altro, hai fatto finora nel tentativo di risolvere questo problema? Questo sito non è un servizio di codifica di script.
JakeGould

Risposte:


0

È possibile aggiungere la punteggiatura mancante ai paragrafi nelle celle delle tabelle con il seguente codice. Per quanto riguarda le condizioni in cui ciò verrebbe eseguito, dovrai dare un'occhiata al mio commento e fornire maggiori informazioni.

Sub AddPunction()
Dim para As Paragraph, tbl As Table, tRow As Row
Dim tCell As Cell, cRng As Range, pRng As Range
For Each tbl In ActiveDocument.Tables
    For Each tRow In tbl.rows
        For Each tCell In tRow.Cells
            Set cRng = tCell.Range
            cRng.MoveEnd wdCharacter, -1
            If cRng.Paragraphs.Count > 0 Then
                For Each para In cRng.Paragraphs
                    Set pRng = para.Range
                    If Asc(pRng.Characters.Last) = 13 Then
                        pRng.MoveEnd wdCharacter, -1
                    End If
                    If Not Asc(pRng.Characters.Last) = 46 Then
                        pRng.Text = pRng.Text & "."
                    End If
                Next para
            End If
        Next tCell
    Next tRow
Next tbl
End Sub

In base alle tue domande aggiuntive inserite come commenti, ecco i supplementi alla mia risposta originale:

Per una risorsa su Creazione o Esecuzione di una macro, utilizzare questo collegamento Supporto Microsoft. https://support.office.com/en-us/article/create-or-run-a-macro-c6b99036-905c-49a6-818a-dfb98b7c3c9c

Per quanto riguarda l'altra domanda relativa all'adattamento del codice sopra riportato in base alle nuove informazioni fornite, ecco come modificarlo.

Sub TableLookBackAddPunctuation()
Dim para As Paragraph, tbl As Table, tRow As Row
Dim tCell As Cell, cRng As Range, pRng As Range
Dim rng As word.Range
For Each tbl In ActiveDocument.Tables
    For Each tRow In tbl.rows
        Set cRng = tRow.Cells(1).Range
        cRng.MoveEnd wdCharacter, -1
        If cRng.Paragraphs.Count > 0 Then
            For Each para In cRng.Paragraphs
                Set pRng = para.Range
                If Asc(pRng.Characters.Last) = 13 Then
                    pRng.MoveEnd wdCharacter, -1
                End If
                Select Case Asc(pRng.Characters.Last)
                    Case 33, 34, 35, 36, 37, 38, 39, 40, _
                            41, 42, 43, 44, 45, 46, 63
                        'do nothing, punctuation already set
                    Case Else
                        Set rng = pRng
                        rng.Collapse wdCollapseStart
                        With rng.Find
                            .ClearFormatting
                            .Format = False
                            .Forward = False
                            .MatchCase = True
                            .Text = pRng.Text
                            .Wrap = wdFindStop
                            .Execute
                            If .found Then
                                rng.MoveEnd wdCharacter, 1
                                Select Case Asc(rng.Characters.Last)
                                    Case 33, 34, 35, 36, 37, 38, 39, 40, _
                                            41, 42, 43, 44, 45, 46, 63
                                        pRng.Text = pRng.Text & rng.Characters.Last
                                    Case Else
                                        'do nothing, there's no punctuation
                                End Select
                            End If
                        End With
                End Select
            Next para
        End If
    Next tRow
Next tbl
End Sub

Due domande: (1) Come inserisco un codice come questo in un documento MS? e (2) Come modificherebbe questo codice in modo che sarebbe in grado di portare a termine il mio compito chiarito dall'immagine nella mia domanda?
bpb

@ bpb Sembra che tu stia mettendo in fila la community per fare il codice per te. La realtà è che questa risposta fornisce una risposta alla domanda che hai fornito. Devi sapere come usare le macro e modificarle per adattarle al tuo nuovo caso. E in tutta onestà, domande come questa che sono vaghe sono un esempio da manuale per cui nessuno dovrebbe semplicemente codificare una soluzione come questa. La domanda è vaga e questa comunità non è un servizio di codifica di script.
JakeGould

Grazie Rich, cercherò tra quelle risorse e userò il tuo esempio per aiutare a capire meglio il problema. E grazie Jake per aver chiarito l'uso del forum, sarò sicuro di tenere a mente i tuoi punti in futuro.
bpb
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.