Редактирование строк с последующим знаком пунктуации в Microsoft Word

331
bpb

У меня есть документ Microsoft Word с двумя разделами текста. Первый - в форме абзаца, второй - в том, что форма абзаца разбита на сегменты и помещена в таблицу без знаков препинания. Есть ли функция, которую я могу использовать, чтобы:

  • Если : В пунктурованном тексте за разделом следует знак пунктуации,
  • Затем : в пунктуированный текст в таблице добавляется пунктуация.

Если это невозможно в Microsoft Word, то есть ли другие предлагаемые инструменты для достижения этой цели?

Вот снимок экрана, сделанный в Microsoft Word, чтобы проиллюстрировать мою проблему.

Here is an image illustrating task

0
Под разделом вы подразумеваете раздел Word? По знакам препинания мужчины каждый абзац заканчиваются точкой? У вас есть скриншот, который вы можете включить в свой вопрос? Гораздо полезнее увидеть, что вы пытаетесь описать. Rich Michaels 5 лет назад 2
Привет Рич, я добавил изображение. bpb 5 лет назад 0
@bpb Что, если вообще что-то предприняли, пытаясь решить эту проблему? Этот сайт не является сервисом кодирования скриптов. JakeGould 5 лет назад 1

1 ответ на вопрос

0
Rich Michaels

Вы можете добавить пропущенную пунктуацию к абзацам в ячейках таблиц с помощью следующего кода. Что касается условий, при которых это будет выполнено, вам придется взглянуть на мой комментарий и предоставить больше информации.

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 

На основе ваших дополнительных вопросов, размещенных в качестве комментариев, вот дополнения к моему первоначальному ответу:

Для ресурса по созданию или запуску макроса используйте эту ссылку поддержки Microsoft. https://support.office.com/en-us/article/create-or-run-a-macro-c6b99036-905c-49a6-818a-dfb98b7c3c9c

Что касается вашего другого вопроса об адаптации приведенного выше кода на основе вашей новой предоставленной информации, это как его изменить.

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 
Два вопроса: (1) Как я могу ввести подобный код в документ MS? и (2) как бы вы изменили этот код, чтобы он мог выполнить мою задачу, как показано на рисунке в моем вопросе? bpb 5 лет назад 0
@bpb Звучит так, как будто вы ведете сообщество, чтобы писать код для вас. Реальность такова, что этот ответ дает ответ на вопрос, который вы задали. Вы должны знать, как использовать макросы и изменять их, чтобы адаптировать их к вашему новому случаю. И, честно говоря, такие размытые вопросы являются примером из учебника, почему никто не должен просто кодировать подобное решение. Вопрос неопределенный, и это сообщество не является сервисом кодирования сценариев. JakeGould 5 лет назад 0
Спасибо Рич, я посмотрю эти ресурсы и воспользуюсь твоим примером, чтобы лучше понять проблему. И спасибо, Джейк, за разъяснения по поводу использования форума, я обязательно учту ваши замечания в будущем. bpb 5 лет назад 0

Похожие вопросы