Заменить выделенный текст из файла Word - PullRequest
0 голосов
/ 11 февраля 2019

Таким образом, этот подпункт должен заменить выделенный текст во входном документе другим текстом, заданным во входной коллекции (я в синей призме), но он ничего не делает, поскольку в результате получается тот же подсвеченный текст.Я не могу понять, в чем может быть проблема, есть идеи?

Sub Main()
            Dim d As Object = GetDocument(handle, documentName)
            Dim r As Object = d.Range
            Dim i As Integer
            Dim current_text As String = Nothing
            Dim new_text As String = Nothing

            r.Find.Highlight = True
            r.Find.Forward = True

            For repeat As Integer = 0 To fields.Columns.count() - 1
                For index As Integer = 0 To fields.Rows.count() - 1
                    current_text = fields.Rows(index).Item(0)
                    new_text = collection.Rows(index).Item(repeat)

                    Do While r.Find.Execute(current_text)
                        If r.HighlightColorIndex = currentHighlight Then
                            r.Text = new_text
                            r.HighlightColorIndex = CInt(newHighlight)
                            r.Bold = newBold
                        End If
                        i = r.End


    r.Start = i

                Loop

            Next
            Next

End Sub

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Преобразуйте содержимое этапа сбора в текст, используя «Служебные строки> Получить коллекцию как CSV».Затем удалите запятые и замените их пробелами, например (в c #):

string correctString = collectionCSV.Replace(",", " ");  
amendedCSV = correctString;

. Это может привести к выводу элемента данных текстового типа (т. Е. Содержимого коллекции в текстовом виде с интервалом в запятые), который вы можетезатем обратитесь к «MS Word VBO> Type Text», чтобы записать его в документ Word, где бы вам ни понадобилось их разместить.Возможно, вам понадобится сослаться на пространство имен System.IO.dll и System.IO на начальной странице вашего объекта.

0 голосов
/ 15 февраля 2019

Я был решен / сделал то же самое, используя Macro.Вы можете использовать приведенный ниже код для этого и изменить при необходимости, как здесь, заменив текст / теги в документе Word.

Set myDoc = WordApp.Documents.Add(Template:=TemplateFilePath, NewTemplate:=False, DocumentType:=0)
With myDoc.Range.Find
                                    .text = [Text to be find]                                        
                                    .Replacement.text = [Replacement Text]                                        
                                    .Replacement.ClearFormatting
                                    .Replacement.Font.ColorIndex = wdRed
                                    .Forward = True
                                    .Wrap = wdFindContinue
                                    .Format = True
                                    .MatchCase = False
                                    .MatchWholeWord = False
                                    .MatchWildcards = False
                                    .MatchSoundsLike = False
                                    .MatchAllWordForms = False
                                    .Execute Replace:=wdReplaceAll
                            End With
...