我需要在哪里使用VBA比较Excel中的两个文本样本。由于每个文本样本在LEN中超过3000个字符,因此我使用Userform.TextBox字段提取,将它们存储到字符串变量中。
接下来,我使用了我在这里找到的VBA代码' mikerickson ':VBA routine to comp
比较文本。 问题是此代码的输出被输入到Cell:A1。 由于文本样本每个包含超过3000个字符,因此结果不会显示在A1中,因为excel对每个单元格的字符数有限制。
我想知道如何将结果(包括下划线和删除线等所有格式)输入到MS Word文档中。
目前,这是用于输出到单元格A1的代码。
strResult = ComparedText(strOne, strTwo, olStart, olLength, nwStart, nwLength)
With outCell.Cells(1, 1)
.Clear
.Value = strResult
For i = LBound(olStart) To UBound(olStart)
If olStart(i) <> 0 Then
With .Characters(olStart(i), olLength(i)).Font
.ColorIndex = 3
.StrikeThrough = True
End With
End If
Next i
For i = LBound(nwStart) To UBound(nwStart)
If nwStart(i) <> 0 Then
With .Characters(nwStart(i), nwLength(i)).Font
.ColorIndex = 4
.Underline = True
End With
End If
Next i
End With
此处需要替换代码,将 strResult 输入到word文档中,其格式与上述代码中的不匹配完全相同。
希望有人帮忙。提前谢谢。
答案 0 :(得分:0)
这将从Cell A1到Word。如果Cell A1中的数据被截断,那么我们将不得不深入挖掘。
Set wordy = CreateObject("Word.Application")
wordy.Documents.Add
Sheets(1).Range("A1").Copy
wordy.Documents(1).ActiveWindow.Selection.PasteSpecial DataType:=wdPasteRTF
wordy.Visible = True
'wordy.Quit
Set wordy = Nothing
如果我们可以将strResult插入Word并在那里执行格式化,那么这可能对你有用......
Set wordy = CreateObject("Word.Application")
wordy.Documents.Add
wordy.Documents(1).ActiveWindow.Selection.InsertAfter Text:=strResult
wordy.Documents(1).Range.Select
wordy.Visible = True
With wordy.Selection
For i = LBound(olStart) To UBound(olStart)
If olStart(i) <> 0 Then
For j = olStart(i) To (olStart(i) + olLength(i) - 1)
With .Characters(j).Font
.ColorIndex = 3
.Strikethrough = True
End With
Next j
End If
Next i
For i = LBound(nwStart) To UBound(nwStart)
If nwStart(i) <> 0 Then
For j = nwStart(i) To (nwStart(i) + nwLength(i) - 1)
With .Characters(j).Font
.ColorIndex = 4
.Underline = True
End With
Next j
End If
Next i
End With
Set wordy = Nothing
这可能不是最有效的代码,但希望能让您朝着正确的方向前进。我必须创建 j 循环,因为它看起来像在Word中Characters对象一次只能访问一个字符。