在EXCEL中用VBA处理WORD表格常规属性

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在EXCEL S用VBA设置WOR表格常规属性
编辑:madmlwt
1•计算WORD文档中的表格个数
【要求】
在EXCEL中用VBA计算指定的WORD文档“成绩表.doc”中非嵌入式表格的个数。

【代码】
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
Sub计算WORD表格个数()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变

Set dkDOC = wdWORD.Docume nts.Ope n( dqM)'创建文档对象
bgS = dkDOC.Tables.Count '当前文档中的表格总数
dkDOC.Close '关闭文档
Set dkDOC = Nothing '释放存储空间
Set wdWORD = Nothing '释放存储空间
MsgBox Chr(10) & Dir(dqM) & "文档中共有"& bgS & "个表格!",
"计算WORD表格个数"
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
提示:
嵌入式表格如WORD文档中插入的EXCEL表格、表格中插入的表格。

计算表格个数的代码格式 -- 文档对象.Tables.Count
上述方法不能计算WORD文档中的嵌入式表格个数。

2•计算WORD文档中各个表格的行/列数
【要求】
在EXCEL中,遍历WORD文档“成绩表.doc”中的表格,计算表格的行数和列数。

【代码】
Sub计算指定WORD文档中表格行列数()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变
Set dkDOC = wdWORD.Docume nts.Ope n( dqM)'创建文档对象
bgS = dkDOC.Tables.Cou nt'当前文档中的表格总数
For g = 1 To bgS '循环表格
With dkDOC.Tables(g)'逐个表格计算
hs = .Rows.Count '行数
Is = .Columns.Count'列数
MsgBox Chr(10) & Dir(dqM) & "文档共有表格"& bgS & "
个"
& Chr(10) & Chr(10) & "第"& g & "个表格有"
& hs & "行"& ls & "列",,"计算WORD表格行列数"计算信息提示
End With
Next g
dkDOC.Close '关闭文档
Set dkDOC = Nothing '释放存储空间
Set wdWORD = Nothing '释放存储空间
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
提示:
计算行数代码格式 -- 文档对象■表格对象.Rows.Count
计算列数代码格式 -- 文档对象■表格对象.Columns.Count
上述方法不能计算嵌入式表格的行/列数。

3.选定WORD表格的指定区域
⑴选定整个表格
【代码】
Sub选择WORD文档的指定表格整体()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变
Set dkDOC = wdWORD.Docume nts.Ope n( dqM)'创建文档对象wdWORD.Visible = True '窗口可见
'wdWORD.ActiveDocument.Tables⑴.Select'选择整个表格
wdWORD.ActiveDocument.Tables⑴.Range.Select 选择整个表格'wdWORD.Quit '关闭新建文档窗口
Set dkDOC = Nothing '释放存储空间
Set wdWORD = Nothing '释放存储空间
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
⑵选定一个单元格
【代码】
Sub选择WORD表格的第一个单元格()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变Set dkDOC = wdWORD.Docume nts.Ope n( dqM)'创建文档对象
wdWORD.Visible = True '窗口可见
Set wdBG = wdWORD.ActiveDocume nt.Tables(l)'创建表格对象
wdBG.Cell(1, 1).Select '选择第一个单元格
'wdBG.Cell(1, 1).Range.Select '选择第一个单元格
'wdWORD.Quit '关闭新建文档窗口
Set wdBG = Nothing '释放存储空间
Set dkDOC = Nothing '释放存储空间
Set wdWORD = Nothing '释放存储空间
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
⑶选定表格最后一个单元格
【代码】
Sub选择WORD表格的最后一个单元格()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变
Set dkDOC = wdWORD.Docume nts.Ope n( dqM)'创建文档对象
hs = wdWORD. ActiveDocume nt.Tables(1).Rows.Cou nt '行数
ls = wdWORD.ActiveDocume nt.Tables(1).Colu mn s.Cou nt '列数wdWORD.Visible = True 窗口可见
Set wdBG = wdWORD.ActiveDocume nt.Tables(1)'创建表格对象
wdBG.Cell(hs, ls).Range.Select'选择最后一个单元格
'wdWORD.Quit '关闭新建文档窗口
Set wdBG = Nothing '释放存储空间
Set dkDOC = Nothing '释放存储空间
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
一个表格的最后一个单元格由表格的最后一行hs和最后一列Is围成的一个方格。

所以表格最后一个单元格的代码格式是.Cell(hs,ls。

⑷选定指定行/列
【代码】
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
Sub选择WORD表格指定行()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变量
Set dkDOC = wdWORD.Docume nts.Ope n( dqM)'创建文档对象wdWORD.Visible = True '窗
口可见
wdWORD.ActiveDocument.Tables⑴.Rows(3).Select '选择第 3 行
'wdWORD.ActiveDocument.Tables⑴.Rows(3).Range.SeIect'选择第 3 行
'wdWORD.Quit '关闭新建文档窗口
Set dkDOC = Nothing '释放存储空间
Set wdWORD = Nothing '释放存储空间
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
Sub选择WORD表格指定列()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变
Set dkDOC = wdWORD.Docume nts.Ope n( dqM)'创建文档对象
wdWORD.Visible = True '窗口可见
wdWORD.ActiveDocument.Tables⑴.Columns(3).Select '选择第 3 列
'wdWORD.Quit '关闭新建文档窗口
Set dkDOC = Nothing '释放存储空间
Set wdWORD = Nothing '释放存储空间
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
【提示】
选择最后一行
hs = wdWORD.ActiveDocume nt.Tables(1).Rows.Cou nt '行数
wdWORD.ActiveDocument.Tables(1).Rowshs).Select
选择最后一列
ls = wdWORD.ActiveDocume nt.Tables(1).Colu mn s.Cou nt '列数
wdWORD.ActiveDocument.Tables(1).Columns(s).Select
⑸选定WORD表格中任意连续区域
①选择连续行
【代码】
Sub选择WORD表格指定的连续行()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变
Set wDoc = wdWORD.Documents.Open(dqM)创建文档对象wdWORD.Visible = True 窗口可见Set wBG = wDoc.Tables⑴’定义表格变量
wDoc.Range(wBGCell(2, 1).Range.Start, wBG.Cell(wBG.Rows.Count, wB
G.Columns.Count).Range.End).Select'选择第 2 行到最后一行
'wdWORD.Quit '关闭新建文档窗口
Set wBG = Nothing '释放存储空间
Set wDoc = Nothing '释放存储空间
Set wdWORD = Nothing '释放存储空间
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
②选择任意列
【代码】
Sub选择WORD表格任意指定的连续列()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变

Set wDoc = wdWORD.Documents.Open(dqM)创建文档对象wdWORD.Visible = True 窗口可见Set wBG = wDoc.Tables⑴’定义表格变量
wDoc.Range(wBG.Cell(1, 4).Range.Start, wBG.Cell(wBG.Rows.Count, 7).
Range.End).Select '选择第4列到第7列
'wdWORD.Quit '关闭新建文档窗口
Set wBG = Nothing '释放存储空间
Set wDoc = Nothing '释放存储空间
Set wdWORD = Nothing '释放存储空间
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
说明:
列没有Range对象属性。

所以在选择连续列时不能使用如下代码:
wDoc.Range(wBGColumns(4).RangeStart, wBG.Columns(7).RangeEnd).S
elect '选择第4列到第7列
③选择任意连续单元格区域
【代码】
Sub选择WORD表格任意指定的连续单元格区域()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变

Set wDoc = wdWORD.Documents.Open(dqM)创建文档对象wdWORD.Visible = True '窗口可见
Set wBG = wDoc.Tables⑴’定义表格变量
wDoc.Range(wBG.Cell(5, 4).Range.Start, wBG.Cell(7, 7).Range.End).Select'
选择第5行4列到第7行7列构成的单元格区域
'wdWORD.Quit '关闭新建文档窗口
Set wBG = Nothing '释放存储空间
Set wDoc = Nothing '释放存储空间
Set wdWORD = Nothing '释放存储空间
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
【小结】
选择WORD表格中的任意连续区域,关键是确定起始位置和终止位置。

选择任意连续单元格区域的关键代码格式如下:
文档对象.Range表格对象.Cell(起始行,起始列).Range.Start,表格对象.Cell
(终止行,终止列).Range.End).Select
4.设置WORD表格的单元格格式
设置WORD表格的单元格格式,包括单元格中的文本对齐格式和文字的字
体、字号、是否加粗等格式。

WORD表格单元格中的文本的对齐格式,是指段落在水平方向的对齐方式和在垂直方向的对齐方式。

所以在设置单元格的对齐方式时,一要设置单元格中的文本段落在水平方向的对齐方式即左对齐、居中、右对齐,二要设置文本在垂
直方向的对齐方式即靠上、居中、靠下。

【问题】
以WORD文档“成绩表.doc”为例,设置标题行各单元格数据“中部居中(即水平居中且垂直居中)”、“华文新魏”、字号“ 12”、“加粗”。

【代码】
Sub设置WORD表格的单元格格式()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变

Set dkDOC = wdWORD.Docume nts.Ope n( dqM)'创建文档对象wdWORD.Visible = True '窗口可见
Set wdBG = wdWORD.ActiveDocume nt.Tables(1)'创建表格对象
With wdBG.Rows(1).Range '表格第 1 行
.Font.Bold = True '加粗
.Font.Size = 12 '字号
="华文新魏"'字体
.ParagraphFormat.Alig nment = 1 '水平居中
.Cells.VerticalAlig nment = 1 '垂直居中
End With
'wdWORD.Quit '关闭新建文档窗口
Set wdBG = Nothing '释放存储空间
Set dkDOC = Nothing '释放存储空间
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
说明:
单元格数据居中即WORD程序菜单命令“表格/单元格对齐方式”的“中部居中”,指水平居中和垂直居中。

代码如下:
水平居中--- 单元格对象.ParagraphFormat.Alignment = 1
垂直居中--- 单元格对象.Cells.VerticalAlignment = 1
单元格对齐方式常量一览表
注意哦,表中的常量代码,在EXCEL中操作WORD时,由于后期绑定原
因,必须用对应的赋值取代方可体现效果!
5.设置WORD表格的对齐格式
在WORD文档中的表格对齐,主要是指表格在页面水平方向的对齐,即左对齐、居中、右对齐。

对应WORD程序菜单命令“表格/表格属性/表格”中的三种对齐方式。

【代码】
Sub设置WORD文档中的表格对齐()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 放假通知.doc"'带路径的WORD文件名称Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变量
Set dkDOC = wdWORD.Docume nts.Ope n( dqM)'创建文档对象wdWORD.Visible = True '
窗口可见
dkDOC.Tables(1).Rows.Alignment = 1 '水平居中
'wdWORD.Quit '关闭新建文档窗口
Set dkDOC = Nothing '释放存储空间
Set wdWORD = Nothing '释放存储空间
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
6•在WORD表格中插入(删除)行/列
⑴插入行/列
【问题】
与当前操作的EXCEL文件保存在同一位置的WORD文档“放假通知.doc” 中,第一个表格有2行10列,在表格选定行的上/下方或者左/右侧插入新行/列(一行/列或多行/列)。

①在指定行的上/下插入行
【代码】
Sub在指定行的上下插入行()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 放假通知.doc"'带路径的WORD文件名称
Set wApp = CreateObject("Word.Application")'创建WORD 对象
Set wDoc = wApp.docume nts.Ope n(dqM)创建文档对象
wApp.Visible = True '窗口可见
wDoc.Tables⑴.Rows(2).Select '选择指定行(第2行,可以根据表格实际行数修改此数字值)
wDoc.Application.Selection.lnsertRowSbove 3 '指定行上方插入 3 行
'wDoc.Application.Selection.lnsertRowBelow 3 '指定行下方插入 3 行
Zh = wDoc.Tables(1).Rows.Cou nt '计算插入新行后的表格总行数
MsgBox "成功新插入3行,当前表格共有"& Zh & "行",,"在指定列
的上下插入行"
'wDoc.Close True
'wApp.Quit
Set wApp = Nothi ng
Set wDoc = Nothi ng
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
说明:
wDoc.Application.Selection.lnsertRowsAbove 3 --------------在所选择行的上方新插入3行。

如果执行代码--- wDoc.Application.Selection.lnsertRowBelow 3,则是在
所选择行的下方新插入3行。

②在指定列的左/右插入列
【代码】
Sub在指定列的左右插入列()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 放假通知.doc"'带路径的WORD文件名称
Set wDoc = wApp.docume nts.Ope n(dqM)创建文档对象
wApp.Visible = True '窗口可见
Set myB = wDoc.Tables(1)'表格对象wDoc.Tables(1)
表格行=myB.Rows.Cou nt '总行数
表格列=myB.Colu mn s.Cou nt总列数
wDoc.Range(myB.Cell(1, Cells(2, 10).Value).Range.Start, myB.Cell(表格行,
Cells(2, 11).Value ).Ran ge.E nd).Select'选择插入位置列
crL = myB.Selectio n.Colu mn s.Cou nt '计算所选择的列数
wDoc.Application.SelectionnsertColumns '指定行左侧插入行
'wDoc.Application.SelectionnsertColumnsRight'指定行右侧插入行
End If
zL = wDoc.Tables(1).Colum ns.Cou nt '计算插入新列后的表格总列数
MsgBox "成功新插入"& zL-表格列& "列,当前表格共有"& zL & "列",,"插入新列"
'wDoc.Close True
'wApp.Quit
Set wApp = Noth ing
Set wDoc = Nothi ng
Applicati on .Scree nUpdat ing = False '关闭屏幕刷
End Sub
说明:
选择列左侧插入新列--- Insertcolumns
选择列右侧插入新列--- InsertColumnsRight
选择多少列则插入多少新列。

特别地,还可以用Add方法进行插入行/列,但这种方法只能在上方或左侧
接入,不具备灵活性,此处不作讨论
⑵删除行/列
【问题】
与当前操作的EXCEL文件保存在同一位置的WORD文档“放假通知.doc” 中,第一个表格有2行10列,在表格中删除选定的行列。

①删除行
【代码】
Sub删除表格中选定的行()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 放假通知.doc"'带路径的WORD文件名称
Set wApp = CreateObject("Word.Application")'创建WORD 对象
Set wDoc = wApp.docume nts.Ope n(dqM)创建文档对象
wApp.Visible = True '窗口可见
Set myB = wDoc.Tables(1)'表格对象
表格行=myB.Rows.Cou nt '总行数
wDoc.Range(myB.Rows(2).Range.Start, myB.Rows(2).Range.End).Select '选
择要删除的第2行
wDoc.Application.SelectiorRows.Delete '删除选中的行
zH = wDoc.Tables(1).Rows.Cou nt '计算删除行后的表格总行数
MsgBox "成功删除了选定的"&表格行-zH & "行,当前表格还有"
& zH & "行",,"删除行"
'wDoc.Close True
'wApp.Quit
Set wApp = Noth ing
Set wDoc = Nothi ng
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新End Sub
②删除列
【代码】
Sub删除表格中选定的列()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 放假通知.doc"'带路径的WORD文件名称
Set wApp = CreateObject("Word.Application")'创建WORD 对象
Set wDoc = wApp.docume nts.Ope n(dqM)创建文档对象
wApp.Visible = True '窗口可见
Set myB = wDoc.Tables(1)'表格对象
表格行=myB.Rows.Cou nt '总行数
表格列=myB.Colu mn s.Cou nt总列数
wDoc.Range(myB.Cell(1, 2).Range.Start, myB.Cell(表格行,4).Range.End).Se lect '选择删除的第2至4列
wDoc.Application.SelectiorColumns.Delete 删除选中的列
zL = wDoc.Tables(1).Colum ns.Cou nt'计算删除列后的表格列数
MsgBox "成功删除了选定的"&表格列-zL & "列,当前表格还有"
& zL & "列",,"删除列"
'wDoc.Close True
'wApp.Quit
Set wApp = Noth ing
Set wDoc = Nothi ng
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
7 •设置表格行高列宽
【问题】
设置WORD文档“行高列宽.doc”中表格的行高25磅和列宽36磅,标题行高另设30磅。

【代码】
Sub设置表格行高列宽()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 放假通知.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变量后期绑定Set dkDOC = wdWORD.Docume nts.Ope n( dqM)'创建文档对象
wdWORD.Visible = True '窗口可见
Set myB = dkDOC.Tables(1)'表格对象
hs = myB.Rows.Cou nt '总行数
ls = myB.Colum ns.Cou nt 总列数
With myB
For h = 1 To hs
If h = 1 Then
.Rows⑴.Height = 30 '第一行高
ElseIf h > 1 Then
.Rows(h).Height = 25 '行高
End If
Next h
For l = 1 To ls
.Columns(l).PreferredWidth = 36 '列宽
Next l
End With
'wdWORD.Quit '关闭新建文档窗口
Set dkDOC = Nothing '释放存储空间
Set wdWORD = Nothing '释放存储空间
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
说明:
在WORD表格中,常用厘米为单位设置行高列宽。

但在VBA代码中则需
要把厘米转换成磅值。

1磅=0.035厘米。

比如设置行高30磅(即行高1.05厘米)的代码如下:
用磅设置--- .Rows⑴.Height = 30
用厘米设置--- .Rows⑴.Height = Application.CentimetersToPoints(1.05)
CentimetersToPoint—将计量单位从厘米转换为磅。

8.自动调整WORD表格的列宽
【问题】
在WORD文档“成绩表.doc”中,根据表格内容自动调整列的宽度。

【代码】
Sub根据表格内容自动调整列宽()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变量后期绑定Set dkDOC = wdWORD.Docume nts.Ope n( dqM)'创建文档对象wdWORD.Visible = True '窗口可见
gs = dkDOC.Tables.Cou nt '表格个数
For s = 1 To gs '从第一个表格循环到最后一个表格
Set myB = dkDOC.Tables(s)'表格对象
myB.AutoFitBehavior (1)'根据内容自动调整列宽
Next s
'dkDOC.SaveAs保存文档修改
'dkDOC.CIose关闭文档
'wdWORD.Quit '关闭新建文档窗口
Set myB = Nothing '释放存储空间
Set dkDOC = Nothi ng
Set wdWORD = Noth ing
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
说明:
代码myB.AutoFitBehavior (1)中的数值1是根据表格内容自动调整列宽的常量设置值,即仁wdAutoFitContent。

根据表格内容自动调整列宽——是指表格中所有数据,以列中最大字符宽度
来调整该列宽。

9 •设置表格标题行自动重复
【问题】
在WORD文档“成绩表.doc”中,对跨页表格设置标题行重复(即一个表格如果有几个页面,则每个页面都显示相同的标题行)。

【代码】
Sub WORD表格标题行重复()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变量后期绑定Set dkDOC = wdWORD.Docume nts.Ope n( dqM)'创建文档对象wdWORD.Visible = True '窗口可见gs = dkDOC.Tables.Cou nt '表格个数
For s = 1 To gs '从第一个表格循环到最后一个表格
Set myB = dkDOC.Tables(s)'表格对象
myB.Rows(1).Select '选择表格标题行
dkDOC.Application.Selection.Rows.HeadingFormat = True '行标题
重复
Next s
'dkDOC.SaveAs保存文档修改
'dkDOC.CIose'关闭文档
'wdWORD.Quit '关闭新建文档窗口
Set myB = Nothing '释放存储空间
Set dkDOC = Nothi ng
Set wdWORD = Noth ing
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
说明:
如果直接在WORD文档中,选定表格标题行,运行代码Selection.Rows.He adingFormat =wdToggle即可达到标题行重复(重复执行则撤销标题行重复)。

当然代码Selection.Rows.HeadingFormat= True 亦可标题行重复,True 用False 替换则是撤销标题行重复。

10.设置WORD表格的边框格式
⑴表格边框
WORD表格边框分为外边框和内边框,其边框设置代码格式如下:
内边框线-- 文档表格对象」nsideLineStyle=^型常量值
外边框线-- 文档表格对象・0utsideLineStyle =线型常量值
⑵边框类型
边框类型常量列表一览表
⑶边框线型设置
边框线型设置值为True_默认边框线、值为False_没有边框线, 否则可以设置为如下边框线型常量之一。

边框线型设置常量一览表
⑷表格边框设置
【代码】
Sub设置表格边框()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变
量后期绑定
Set dkDOC = wdWORD.Docume nts.Ope n( dqM)'创建文档对象wdWORD.Visible = True '窗口可见gs = dkDOC.Tables.Cou nt '表格个数
For s = 1 To gs '从第一个表格循环到最后一个表格Selectio n.
Set myB = dkDOC.Tables(s)'表格对象
With myB.Borders
」nsideLineStyle = 24 '内部单线
.OutsideLineStyle = 10 '粗细小间隙双线
End With
Next s
'dkDOC.SaveAs保存文档修改
'dkDOC.CIose'关闭文档
'wdWORD.Quit '关闭新建文档窗口
Set myB = Nothing '释放存储空间
Set dkDOC = Nothi ng
Set wdWORD = Noth ing
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
说明:
本事例是对表格边框的常规设置方法。

如果需要对表格边框四边及内部(水平、垂直)单独个性设置,可以按边框类型进行单独设置。

如对边框四边的左边框线进行设置,代码及格式如下:
With 文档表格对象.Borders(wdBorderLeft)
.Li neStyle二wdLi neStyleThi nThickSmallGap'线型
.LineWidth二wdLineWidth300pt'线宽
.Color二wdColorAutomatic'颜色
End With
其中wdBorderLeft 为边框类型常量、wdLineStyleThinThickSmallGap 为边框线型常量,都可以过前面的一览表查询;wdLineWidth300pt为线宽(粗细)常量、wdColorAutomatic为颜色常量,可以自己查验。

在EXCEL中用VBA操作WORD表格边框设置,不能直接使用WORD中的常量,而应该转换成具体的常量值,这个在整个Office中VBA都可以通用。

11. WORD表格格式设置综合示例
【问题】
把WORD文档“成绩表.doc”中的所有表格进行格式设置。

外边框设置一粗一细大间隔双线,内边框为单实线。

标题行加粗、华文新魏、12号、居中。

其他行数据宋体、10号、中部两端对齐(水平左对齐、垂直居中)。

根据表格内容自动调节列宽。

如果同一表格跨页则表格后续页每页顶端显示标题行(即标题行重复)。

整个表格在页面中水平居中。

【代码】
Sub综合设置WORD表格格式()
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
dqM = ThisWorkbook.Path & 成绩表.doc"'带路径的WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个Word 对象变

Set dkDOC = wdWORD.Docume nts.Ope n( dqM)'创建文档对象wdWORD.Visible = True '窗口可见gs = dkDOC.Tables.Cou nt '表格个数
For s = 1 To gs '从第一个表格循环到最后一个表格
Set myB = dkDOC.Tables(s)'表格对象
'设置边框线
With myB.Borders'整个表格
.1 nsideLi neStyle = 24 '内部单线
.OutsideLineStyle = 10 '粗细小间隙双线
End With
'标题行文字格式设置
With myB.Rows(1).Range '表格第 1 行
.Fo nt.Bold = True '加粗
.Fo nt.Size = 12 '字号
="华文新魏"'字体
.ParagraphFormat.Alig nment = 1 '水平居中
.Cells.VerticalAlig nment = 1 '垂直居中
End With
'标题行重复、自动调整列宽
myB.Rows(1).Select '选择表格标题行
dkDOC.Applicatio n.Selectio n.Rows.Headi ngFormat = True '行标题重复
myB.AutoFitBehavior (1)根据内容自动调整列宽
'设置数据行字体及对齐格式
With dkDOC.Range(myB.Cell(2, 1).Range.Start, myB.Cell(myB.Rows.C ount, myB.Columns.Count).Range.End)'文档表格第 2 行到最后一行
.Fo nt.Size = 10 '字号
="宋体"'字体
.ParagraphFormat.Alignment = 3 '两端对齐(水平左对齐)
.Cells.VerticalAlig nment = 1 '垂直居中
End With
'设置整个表格在页面中水平居中
myB.Rows.Alig nment = 1'水平居中
Next s
'dkDOC.SaveAs保存文档修改
'dkDOC.CIose'关闭文档
'wdWORD.Quit '关闭新建文档窗口
Set myB = Nothing '释放存储空间
Set dkDOC = Nothi ng
Set wdWORD = Noth ing
Applicati on .Scree nUpdat ing = False '关闭屏幕刷新
End Sub
WORD表格的常规属性,也就是一些表格最基本的格式设置——即表格在页面中的对齐方式、表格及行/列和连续单元格区域的选择、单元格的对齐方式、字体设置等。

最后以一个综合性的表格格式设置结束。

在本篇涉及的表格格式设置,其方法不一定是最优、最简,仅是提供一个解决问
题的思路,起一个阶梯作用,希望使你有些微收获!
至此,WORD表格的基本操作可以画一个句号。

后续请关注《读取WORD 表格数据》。

相关文档
最新文档