0

我有几页的 MS-Word 文档,其中每几段都有一个新的段落编号。请参见下面的示例。另外,在 MS-Excel 或 CSV 文件中,我有两列信息——段落编号以及是否应突出显示:

Paragraph Number, Highlight?

1, True
2, False
3, True

在 Word 文档中突出显示的上面的控制列表中列出为“真”的段落组的最简单方法是什么?

All about fruits

Apples

Paragraph group 1

Each person shall eat one apple a day to keep the doctor away.

Note: Apples are a red fruit.

Apples have been growing for a long time. Sometimes they fall off the tree by themselves. Sometimes you have to pick them.

Pears

Paragraph group 2

Pears shall be sliced before being eaten.

Pears are usually green, and better when a little soft.

Note: Pears have a distinctive shape

Tomatoes

Paragraph group 3

Tomatoes shall be washed before being eaten.

Note: Tomatoes really are a fruit, not a vegetable.

Or rather, vegetable is not a scientific term. It is a common term.
4

1 回答 1

0

下面的示例使用 Word VBA 进入 Excel 并获取工作表数据,然后用于定义文档中突出显示的范围。为了使此代码正常工作,请确保引用Microsoft Excel 14.0 Object Library

Microsoft Excel 14.0 对象库

Public Sub HighlightParaGroups()

Dim xlApp As Excel.Application
Dim xlWB As Excel.Workbook
Dim xlWS As Excel.Worksheet
Dim x As Integer
Dim r As Integer 'Total rows of data
Dim rngStartPoint As Range
Dim rngEndPoint As Range

Set xlApp = CreateObject("Excel.Application")
'Hard coded path to Excel worksheet
Set xlWB = xlApp.Workbooks.Open("C:\Users\Joe\Desktop\SO Data Test.xlsx")
Set xlWS = xlApp.Worksheets(1)

'This is the hard coded amount of rows for the example given.
'If row amount will vary, write a sub to detect range of data
r = 3
ActiveDocument.Select

For x = 1 To r
    Debug.Print xlWS.Cells(x, 2)
    If xlWS.Cells(x, 2) = "True" Then 'test for values to highlight
        Set rngStartPoint = DefineHighlightRange(x, True)
        If x + 1 <= r Then
            x = x + 1
            Set rngEndPoint = DefineHighlightRange(x, False)
            x = x - 1
        Else 'In case last paragraph needs to be highlighted
            ActiveDocument.Characters.Last.Select
            Selection.Collapse
            Set rngEndPoint = Selection.Range
        End If
        rngStartPoint.SetRange Start:=rngStartPoint.Start, End:=rngEndPoint.Start
        rngStartPoint.HighlightColorIndex = wdYellow
    End If
Next

xlWB.Close False ' close the workbook without saving
xlApp.Quit ' close the Excel application
Set xlWB = Nothing
Set xlApp = Nothing

End Sub

这是用于定义范围的函数:

Public Function DefineHighlightRange(x As Integer, DecisionFlag As Boolean) As Range

'DecisionFlag determines if the selection needs to be 
'repositioned for the start point of the range
Selection.Find.Text = "Paragraph group " & x
Selection.Find.Execute
Selection.HomeKey
If DecisionFlag = True Then
    Selection.MoveDown Unit:=wdLine, Count:=1
End If
Set DefineHighlightRange = Selection.Range

End Function

希望这可以帮助。

于 2012-06-28T03:01:51.980 回答