工作中遇到了这个问题,技术难度虽然不太大,但是为了方便,写了两个函数,先发上来,供大家以后参考,自己也做个记录。
- Dim objWordApp As New Word.Application
- Dim objWordDoc As New Word.Document
- objWordApp.Documents.Open strFileName
- Set objWordDoc = objWordApp.ActiveDocument
- '//
- '新增操作表格的项
- '在使用前,要先在模板中插入一个临时表格
- '如果表格的行或列不够,系统会自动新增
- '但新增的表格可能会不太规范,所以最好在模板中就先定义好表格的各项数据(宽度,大小,字体...)
- WriteTable objWordDoc, 1, 1, "列头1", 1
- WriteTable objWordDoc, 1, 2, "列头2", 1
- WriteTable objWordDoc, 1, 3, "列头3", 1
- WriteTable objWordDoc, 1, 4, "列头4", 1
- WriteTable objWordDoc, 1, 5, "列头5", 1
- WriteTable objWordDoc, 2, 1, "列值A", 1
- WriteTable objWordDoc, 2, 2, "列值B", 1
- WriteTable objWordDoc, 2, 3, "列值C", 1
- WriteTable objWordDoc, 2, 4, "列值D", 1
- WriteTable objWordDoc, 2, 5, "列值E", 1
- '//
- objWordApp.Visible = True
- objWordDoc.PrintOut
- objWordDoc.Close
- objWordApp.Quit
'// 然后是两个操作表格的函数,函数虽然简单,但提示一个方向,一个思路.
'/// 检查当前表格行或列的总数是否足够,不够则会新增
'/// objDoc Word文档对象
'/// iRows 需要的行数
'/// iCols 需要的列数
'/// iTables 要操作文档中的第几个表格, 1 - N, 默认为第一个
Private Function InsertTable(objDoc As Word.Document, iRows As Integer, iCols As Integer, Optional ByVal iTables As Integer = 1)
Dim countRows As Integer
Dim countCols As Integer
Dim TableIndex As Integer
Dim i As Integer
TableIndex = iTables
If TableIndex > 0 Then
countCols = objDoc.Tables(TableIndex).Columns.Count
countRows = objDoc.Tables(TableIndex).Rows.Count
For i = countCols To iCols - 1
objDoc.Tables(TableIndex).Columns.Add
Next
For i = countRows To iRows - 1
objDoc.Tables(TableIndex).Rows.Add
Next
End If
End Function
'/// 在指定文档中的指定表格中的指定行列中插入值
'/// objDoc Word文档对象
'/// iRows 指定的行数
'/// iCols 指定的列数
'/// sValue 要插入的值
'/// iTables 要操作文档中的第几个表格, 1 - N , 默认为第一个
Private Function WriteTable(objDoc As Word.Document, iRows As Integer, iCols As Integer, sValue As String, Optional ByVal iTables As Integer = 1)
Dim TableIndex As Integer
TableIndex = iTables
If TableIndex > 0 Then
InsertTable objDoc, iRows, iCols, iTables
objDoc.Tables(TableIndex).Cell(iRows, iCols).WordWrap = True
objDoc.Tables(TableIndex).Cell(iRows, iCols).Range.Text = sValue
End If
End Function