这些是VBA编程的问题,直接察看Word的帮助即可 下面是Word中的说明,还有例子,是VB的,转换成DELPHI的即可 处理表格 本主题包含与下列任务相关的 Visual Basic 示例: 在表格单元格中插入文字 创建一张表格,插入文字,并应用格式 返回表格单元格中的文字,不包括单元格的结束标记 将文本转换为表格 返回每个表格单元格的内容 将活动文档中的所有表格复制到新文档中 在表格单元格中插入文字下面示例在活动文档第一个表格的第一个单元格中插入文字。Cell 方法返回单个的 Cell 对象。Range 属性返回 Range 对象。Delete 方法用来删除现有的文字,而 InsertAfter 方法用来插入“Cell 1,1”文字。If ActiveDocument.Tables.Count >= 1 Then With ActiveDocument.Tables(1).Cell(Row:=1, Column:=1).Range .Delete .InsertAfter Text:="Cell 1,1" End With End If创建一张表格,插入文字,并应用格式下面的示例在文档的开头插入一张 3 行 4 列的表格。For Each...Next 结构用来循环遍历表格中的每个单元格。在 For Each...Next 结构中,InsertAfter 方法用来向表格单元格(Cell 1、Cell 2 等等)添加文字。Set oDoc = ActiveDocument Set oTable = oDoc.Tables.Add( _ Range:=oDoc.Range(Start:=0, End:=0), NumRows:=3, _ NumColumns:=4) iCount = 1 For Each oCell In oTable.Range.Cells oCell.Range.InsertAfter "Cell " & iCount iCount = iCount + 1 Next oCell oTable.AutoFormat Format:=wdTableFormatColorful2, _ ApplyBorders:=True, ApplyFont:=True, ApplyColor:=True返回表格单元格中的文字,不包括单元格的结束标记下面的示例返回并显示文档第一张表格的第一行中每个单元格的内容。Set oTable = ActiveDocument.Tables(1) For Each aCell In oTable.Rows(1).Cells Set myRange = ActiveDocument.Range(Start:=aCell.Range.Start, _ End:=aCell.Range.End - 1) MsgBox myRange.Text Next aCellSet oTable = ActiveDocument.Tables(1) For Each aCell In oTable.Rows(1).Cells Set myRange = aCell.Range myRange.MoveEnd Unit:=wdCharacter, Count:=-1 MsgBox myRange.Text Next aCell将文本转换为表格下面的示例在活动文档的开头插入用制表符分隔的文本,然后将这些文本转换为一张表格。Set oRange1 = ActiveDocument.Range(Start:=0, End:=0) oRange1.InsertBefore "one" & vbTab & "two" & vbTab & "three" & vbCr Set oTable1 = oRange1.ConvertToTable( _ Separator:=Chr(9), NumRows:=1, NumColumns:=3)返回每个表格单元格的内容下面的示例定义一个数组,使该数组的元素个数等于文档第一个表格中的单元格数(假定 Option Base 1)。For Each...Next 结构用来返回每个表格单元格的内容,并将文字指定给相应的数组元素。If ActiveDocument.Tables.Count >= 1 Then Set oTable = ActiveDocument.Tables(1) iNumCells = oTable.Range.Cells.Count ReDim aCells(iNumCells) i = 1 For Each oCell In oTable.Range.Cells Set myRange = oCell.Range myRange.MoveEnd Unit:=wdCharacter, Count:=-1 aCells(i) = myRange.Text i = i + 1 Next oCell End If将活动文档中的所有表格复制到新文档中本示例将当前文档中的表格复制到新文档中。If ActiveDocument.Tables.Count >= 1 Then Set oDoc1 = ActiveDocument Set MyRange = Documents.Add.Range(Start:=0, End:=0) For Each oTable In oDoc1.Tables oTable.Range.Copy With MyRange .Paste .Collapse Direction:=wdCollapseEnd .InsertParagraphAfter .Collapse Direction:=wdCollapseEnd End With Next End If
处理 Range 对象 使用 Visual Basic 通常需要完成的任务是在文档中指定一个区域,然后对该区域进行一些操作,例如插入文字或应用格式。例如,可能需要编写一个宏,用来在文档的某一部分查找一个单词或词组。文档的这一部分就可以用 Range 对象来代表。定义 Range 对象后,就可以应用 Range 对象的方法和属性来修改这个区域的内容。Range 对象引用文档中的某一连续区域。每个 Range 对象都是通过开始和结束字符位置来定义的。与在文档中使用的书签类似,在 Visual Basic 过程中使用 Range 对象可以定义文档的某一部分。一个 Range 对象小至只是一个插入点,大至包括整篇文档。但是与书签不同,Range 对象只在定义该对象的过程运行时才存在。Start、End 和 StoryType 属性标识唯一一个 Range 对象。Start 和 End 属性返回或设置 Range 对象的开始和结束字符位置。在文档开头的字符位置为零,第一个字符之后的位置为 1,以此类推。StoryType 属性的 WdStoryType 常量可以代表 11 个不同的文字部分。注意 Range 对象与所选内容无关。也就是说,可以定义和修改一个区域而不会改变当前的所选内容。在文档中也可以定义多个区域,而每个文档窗格只能有一个选定内容。使用 Range 方法Range 方法用来在指定的文档中创建一个 Range 对象。Range 方法(可在 Document 对象中使用)返回一个 Range 对象,该对象位于已给定起点和终点的主要文字部分。下面的示例创建一个 Range 对象,并将该对象赋予 MyRange 变量。Set myRange = ActiveDocument.Range(Start:=0, End:=10)MyRange 引用活动文档的前 10 个字符。当您将一个属性或方法应用于保存在 MyRange 变量中的 Range 对象时,就会发现已经创建了 Range 对象。下面的示例对活动文档的前 10 个字符应用加粗格式。Set myRange = ActiveDocument.Range(Start:=0, End:=10) myRange.Bold = True如果需要多次引用同一个 Range 对象,则可用 Set 语句设置一个等于 Range 对象的变量。但是,如果只想对 Range 对象进行一次操作,则不必将该对象保存在变量中。只使用一个标识区域并更改 Bold 属性的指令,也能得到相同的结果。ActiveDocument.Range(Start:=0, End:=10).Bold = True与书签相似,一个区域可以跨越一组字符或者标识文档中的一个位置。在下面的示例中 Range 对象的开始和结束位置相同。该区域不包含任何文字。下面的示例在活动文档的开头插入文字。Set myRange = ActiveDocument.Range(Start:=0, End:=0) myRange.InsertBefore "Hello "如上所示,可以使用字符位置编号,也可使用诸如 Selection、Book 或 Range 之类的对象的 Start 和 End 属性来定义区域的开始和结束位置。下面的示例创建 Range 对象,该对象从第二段的开头开始,至第三段的末尾结束。Set myDoc = ActiveDocument Set myRange = myDoc.Range(Start:=myDoc.Paragraphs(2).Range.Start, _ End:=myDoc.Paragraphs(3).Range.End)其他内容和示例,请参阅 Range 方法。使用 Range 属性有多种对象具有 Range 属性,例如 Paragraph、Book 和 Cell 对象,并且该属性用来返回一个 Range 对象。下面的示例返回一个 Range 对象,该对象引用活动文档的第一个段落。Set myRange = ActiveDocument.Paragraphs(1).Range当有了 Range 对象之后,可以使用它的任何属性或方法来修改该 Range 对象。下面的示例选定活动文档的第二个段落。ActiveDocument.Paragraphs(2).Range.Select如果想对相同一个 Range 对象应用多个属性或方法,可使用 With…End With 结构。下面的示例设置活动文档第一个段落的文字格式。Set myRange = ActiveDocument.Paragraphs(1).Range With myRange .Bold = True .ParagraphFormat.Alignment = wdAlignParagraphCenter .Font.Name = "Arial" End With有关的其他内容和示例,请参阅 Range 属性主题。重新定义一个 Range 对象使用 SetRange 方法重新定义一个现有的 Range 对象。下面的示例将 myRange 定义为当前所选内容。SetRange 方法重新定义 myRange,使该变量可引用当前所选内容及其后的十个字符。Set myRange = Selection.Range myRange.SetRange Start:=myRange.Start, End:=myRange.End + 10其他内容和示例,请参阅 SetRange 方法。注意 调试宏时,可以使用 Select 方法来确保 Range 对象引用的是正确的文字区域。例如,下面的示例选定名为 aRange 的 Range 对象。aRange 对象引用活动文档的第二和第三段。Set aRange = ActiveDocument.Paragraphs(2).Range aRange.SetRange Start:=aRange.Start, _ End:=ActiveDocument.Paragraphs(3).Range.End aRange.Select
下面是Word中的说明,还有例子,是VB的,转换成DELPHI的即可
处理表格
本主题包含与下列任务相关的 Visual Basic 示例: 在表格单元格中插入文字
创建一张表格,插入文字,并应用格式
返回表格单元格中的文字,不包括单元格的结束标记
将文本转换为表格
返回每个表格单元格的内容
将活动文档中的所有表格复制到新文档中
在表格单元格中插入文字下面示例在活动文档第一个表格的第一个单元格中插入文字。Cell 方法返回单个的 Cell 对象。Range 属性返回 Range 对象。Delete 方法用来删除现有的文字,而 InsertAfter 方法用来插入“Cell 1,1”文字。If ActiveDocument.Tables.Count >= 1 Then
With ActiveDocument.Tables(1).Cell(Row:=1, Column:=1).Range
.Delete
.InsertAfter Text:="Cell 1,1"
End With
End If创建一张表格,插入文字,并应用格式下面的示例在文档的开头插入一张 3 行 4 列的表格。For Each...Next 结构用来循环遍历表格中的每个单元格。在 For Each...Next 结构中,InsertAfter 方法用来向表格单元格(Cell 1、Cell 2 等等)添加文字。Set oDoc = ActiveDocument
Set oTable = oDoc.Tables.Add( _
Range:=oDoc.Range(Start:=0, End:=0), NumRows:=3, _
NumColumns:=4)
iCount = 1
For Each oCell In oTable.Range.Cells
oCell.Range.InsertAfter "Cell " & iCount
iCount = iCount + 1
Next oCell
oTable.AutoFormat Format:=wdTableFormatColorful2, _
ApplyBorders:=True, ApplyFont:=True, ApplyColor:=True返回表格单元格中的文字,不包括单元格的结束标记下面的示例返回并显示文档第一张表格的第一行中每个单元格的内容。Set oTable = ActiveDocument.Tables(1)
For Each aCell In oTable.Rows(1).Cells
Set myRange = ActiveDocument.Range(Start:=aCell.Range.Start, _
End:=aCell.Range.End - 1)
MsgBox myRange.Text
Next aCellSet oTable = ActiveDocument.Tables(1)
For Each aCell In oTable.Rows(1).Cells
Set myRange = aCell.Range
myRange.MoveEnd Unit:=wdCharacter, Count:=-1
MsgBox myRange.Text
Next aCell将文本转换为表格下面的示例在活动文档的开头插入用制表符分隔的文本,然后将这些文本转换为一张表格。Set oRange1 = ActiveDocument.Range(Start:=0, End:=0)
oRange1.InsertBefore "one" & vbTab & "two" & vbTab & "three" & vbCr
Set oTable1 = oRange1.ConvertToTable( _
Separator:=Chr(9), NumRows:=1, NumColumns:=3)返回每个表格单元格的内容下面的示例定义一个数组,使该数组的元素个数等于文档第一个表格中的单元格数(假定 Option Base 1)。For Each...Next 结构用来返回每个表格单元格的内容,并将文字指定给相应的数组元素。If ActiveDocument.Tables.Count >= 1 Then
Set oTable = ActiveDocument.Tables(1)
iNumCells = oTable.Range.Cells.Count
ReDim aCells(iNumCells)
i = 1
For Each oCell In oTable.Range.Cells
Set myRange = oCell.Range
myRange.MoveEnd Unit:=wdCharacter, Count:=-1
aCells(i) = myRange.Text
i = i + 1
Next oCell
End If将活动文档中的所有表格复制到新文档中本示例将当前文档中的表格复制到新文档中。If ActiveDocument.Tables.Count >= 1 Then
Set oDoc1 = ActiveDocument
Set MyRange = Documents.Add.Range(Start:=0, End:=0)
For Each oTable In oDoc1.Tables
oTable.Range.Copy
With MyRange
.Paste
.Collapse Direction:=wdCollapseEnd
.InsertParagraphAfter
.Collapse Direction:=wdCollapseEnd
End With
Next
End If
使用 Visual Basic 通常需要完成的任务是在文档中指定一个区域,然后对该区域进行一些操作,例如插入文字或应用格式。例如,可能需要编写一个宏,用来在文档的某一部分查找一个单词或词组。文档的这一部分就可以用 Range 对象来代表。定义 Range 对象后,就可以应用 Range 对象的方法和属性来修改这个区域的内容。Range 对象引用文档中的某一连续区域。每个 Range 对象都是通过开始和结束字符位置来定义的。与在文档中使用的书签类似,在 Visual Basic 过程中使用 Range 对象可以定义文档的某一部分。一个 Range 对象小至只是一个插入点,大至包括整篇文档。但是与书签不同,Range 对象只在定义该对象的过程运行时才存在。Start、End 和 StoryType 属性标识唯一一个 Range 对象。Start 和 End 属性返回或设置 Range 对象的开始和结束字符位置。在文档开头的字符位置为零,第一个字符之后的位置为 1,以此类推。StoryType 属性的 WdStoryType 常量可以代表 11 个不同的文字部分。注意 Range 对象与所选内容无关。也就是说,可以定义和修改一个区域而不会改变当前的所选内容。在文档中也可以定义多个区域,而每个文档窗格只能有一个选定内容。使用 Range 方法Range 方法用来在指定的文档中创建一个 Range 对象。Range 方法(可在 Document 对象中使用)返回一个 Range 对象,该对象位于已给定起点和终点的主要文字部分。下面的示例创建一个 Range 对象,并将该对象赋予 MyRange 变量。Set myRange = ActiveDocument.Range(Start:=0, End:=10)MyRange 引用活动文档的前 10 个字符。当您将一个属性或方法应用于保存在 MyRange 变量中的 Range 对象时,就会发现已经创建了 Range 对象。下面的示例对活动文档的前 10 个字符应用加粗格式。Set myRange = ActiveDocument.Range(Start:=0, End:=10)
myRange.Bold = True如果需要多次引用同一个 Range 对象,则可用 Set 语句设置一个等于 Range 对象的变量。但是,如果只想对 Range 对象进行一次操作,则不必将该对象保存在变量中。只使用一个标识区域并更改 Bold 属性的指令,也能得到相同的结果。ActiveDocument.Range(Start:=0, End:=10).Bold = True与书签相似,一个区域可以跨越一组字符或者标识文档中的一个位置。在下面的示例中 Range 对象的开始和结束位置相同。该区域不包含任何文字。下面的示例在活动文档的开头插入文字。Set myRange = ActiveDocument.Range(Start:=0, End:=0)
myRange.InsertBefore "Hello "如上所示,可以使用字符位置编号,也可使用诸如 Selection、Book 或 Range 之类的对象的 Start 和 End 属性来定义区域的开始和结束位置。下面的示例创建 Range 对象,该对象从第二段的开头开始,至第三段的末尾结束。Set myDoc = ActiveDocument
Set myRange = myDoc.Range(Start:=myDoc.Paragraphs(2).Range.Start, _
End:=myDoc.Paragraphs(3).Range.End)其他内容和示例,请参阅 Range 方法。使用 Range 属性有多种对象具有 Range 属性,例如 Paragraph、Book 和 Cell 对象,并且该属性用来返回一个 Range 对象。下面的示例返回一个 Range 对象,该对象引用活动文档的第一个段落。Set myRange = ActiveDocument.Paragraphs(1).Range当有了 Range 对象之后,可以使用它的任何属性或方法来修改该 Range 对象。下面的示例选定活动文档的第二个段落。ActiveDocument.Paragraphs(2).Range.Select如果想对相同一个 Range 对象应用多个属性或方法,可使用 With…End With 结构。下面的示例设置活动文档第一个段落的文字格式。Set myRange = ActiveDocument.Paragraphs(1).Range
With myRange
.Bold = True
.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Font.Name = "Arial"
End With有关的其他内容和示例,请参阅 Range 属性主题。重新定义一个 Range 对象使用 SetRange 方法重新定义一个现有的 Range 对象。下面的示例将 myRange 定义为当前所选内容。SetRange 方法重新定义 myRange,使该变量可引用当前所选内容及其后的十个字符。Set myRange = Selection.Range
myRange.SetRange Start:=myRange.Start, End:=myRange.End + 10其他内容和示例,请参阅 SetRange 方法。注意 调试宏时,可以使用 Select 方法来确保 Range 对象引用的是正确的文字区域。例如,下面的示例选定名为 aRange 的 Range 对象。aRange 对象引用活动文档的第二和第三段。Set aRange = ActiveDocument.Paragraphs(2).Range
aRange.SetRange Start:=aRange.Start, _
End:=ActiveDocument.Paragraphs(3).Range.End
aRange.Select