在EXCEL中用VBA处理WORD表格常规属性.docx
《在EXCEL中用VBA处理WORD表格常规属性.docx》由会员分享,可在线阅读,更多相关《在EXCEL中用VBA处理WORD表格常规属性.docx(28页珍藏版)》请在冰豆网上搜索。
![在EXCEL中用VBA处理WORD表格常规属性.docx](https://file1.bdocx.com/fileroot1/2023-2/2/6f237ea6-2edc-4654-9065-29297a9c6cdd/6f237ea6-2edc-4654-9065-29297a9c6cdd1.gif)
在EXCEL中用VBA处理WORD表格常规属性
在EXCEL中用VBA设置WORD表格常规属性
编辑:
madmlwt
1.计算WORD文档中的表格个数
【要求】
在EXCEL中用VBA计算指定的WORD文档“成绩表.doc”中非嵌入式表格的个数。
【代码】
Sub计算WORD表格个数()
Application.ScreenUpdating=False'关闭屏幕刷新
dqM=ThisWorkbook.Path&"\成绩表.doc"'带路径的WORD文件名称
SetwdWORD=CreateObject("Word.Application")'定义一个Word对象变量
SetdkDOC=wdWORD.Documents.Open(dqM)'创建文档对象
bgS=dkDOC.Tables.Count'当前文档中的表格总数
dkDOC.Close'关闭文档
SetdkDOC=Nothing'释放存储空间
SetwdWORD=Nothing'释放存储空间
MsgBoxChr(10)&Dir(dqM)&"文档中共有"&bgS&"个表格!
",,"计算WORD表格个数"
Application.ScreenUpdating=False'关闭屏幕刷新
EndSub
提示:
嵌入式表格如WORD文档中插入的EXCEL表格、表格中插入的表格。
计算表格个数的代码格式——文档对象.Tables.Count
上述方法不能计算WORD文档中的嵌入式表格个数。
2.计算WORD文档中各个表格的行/列数
【要求】
在EXCEL中,遍历WORD文档“成绩表.doc”中的表格,计算表格的行数和列数。
【代码】
Sub计算指定WORD文档中表格行列数()
Application.ScreenUpdating=False'关闭屏幕刷新
dqM=ThisWorkbook.Path&"\成绩表.doc"'带路径的WORD文件名称
SetwdWORD=CreateObject("Word.Application")'定义一个Word对象变量
SetdkDOC=wdWORD.Documents.Open(dqM)'创建文档对象
bgS=dkDOC.Tables.Count'当前文档中的表格总数
Forg=1TobgS'循环表格
WithdkDOC.Tables(g)'逐个表格计算
hs=.Rows.Count'行数
ls=.Columns.Count'列数
MsgBoxChr(10)&Dir(dqM)&"文档共有表格"&bgS&"个"_
&Chr(10)&Chr(10)&"第"&g&"个表格有"&hs&"行"&ls&"列",,"计算WORD表格行列数"'计算信息提示
EndWith
Nextg
dkDOC.Close'关闭文档
SetdkDOC=Nothing'释放存储空间
SetwdWORD=Nothing'释放存储空间
Application.ScreenUpdating=False'关闭屏幕刷新
EndSub
提示:
计算行数代码格式——文档对象.表格对象.Rows.Count
计算列数代码格式——文档对象.表格对象.Columns.Count
上述方法不能计算嵌入式表格的行/列数。
3.选定WORD表格的指定区域
⑴选定整个表格
【代码】
Sub选择WORD文档的指定表格整体()
Application.ScreenUpdating=False'关闭屏幕刷新
dqM=ThisWorkbook.Path&"\成绩表.doc"'带路径的WORD文件名称
SetwdWORD=CreateObject("Word.Application")'定义一个Word对象变量
SetdkDOC=wdWORD.Documents.Open(dqM)'创建文档对象
wdWORD.Visible=True'窗口可见
'wdWORD.ActiveDocument.Tables
(1).Select'选择整个表格
wdWORD.ActiveDocument.Tables
(1).Range.Select'选择整个表格
'wdWORD.Quit'关闭新建文档窗口
SetdkDOC=Nothing'释放存储空间
SetwdWORD=Nothing'释放存储空间
Application.ScreenUpdating=False'关闭屏幕刷新
EndSub
⑵选定一个单元格
【代码】
Sub选择WORD表格的第一个单元格()
Application.ScreenUpdating=False'关闭屏幕刷新
dqM=ThisWorkbook.Path&"\成绩表.doc"'带路径的WORD文件名称
SetwdWORD=CreateObject("Word.Application")'定义一个Word对象变量
SetdkDOC=wdWORD.Documents.Open(dqM)'创建文档对象
wdWORD.Visible=True'窗口可见
SetwdBG=wdWORD.ActiveDocument.Tables
(1)'创建表格对象
wdBG.Cell(1,1).Select'选择第一个单元格
'wdBG.Cell(1,1).Range.Select'选择第一个单元格
'wdWORD.Quit'关闭新建文档窗口
SetwdBG=Nothing'释放存储空间
SetdkDOC=Nothing'释放存储空间
SetwdWORD=Nothing'释放存储空间
Application.ScreenUpdating=False'关闭屏幕刷新
EndSub
⑶选定表格最后一个单元格
【代码】
Sub选择WORD表格的最后一个单元格()
Application.ScreenUpdating=False'关闭屏幕刷新
dqM=ThisWorkbook.Path&"\成绩表.doc"'带路径的WORD文件名称
SetwdWORD=CreateObject("Word.Application")'定义一个Word对象变量
SetdkDOC=wdWORD.Documents.Open(dqM)'创建文档对象
hs=wdWORD.ActiveDocument.Tables
(1).Rows.Count'行数
ls=wdWORD.ActiveDocument.Tables
(1).Columns.Count'列数
wdWORD.Visible=True'窗口可见
SetwdBG=wdWORD.ActiveDocument.Tables
(1)'创建表格对象
wdBG.Cell(hs,ls).Range.Select'选择最后一个单元格
'wdWORD.Quit'关闭新建文档窗口
SetwdBG=Nothing'释放存储空间
SetdkDOC=Nothing'释放存储空间
SetwdWORD=Nothing'释放存储空间
Application.ScreenUpdating=False'关闭屏幕刷新
EndSub
注意:
一个表格的最后一个单元格由表格的最后一行hs和最后一列ls围成的一个方格。
所以表格最后一个单元格的代码格式是.Cell(hs,ls)。
⑷选定指定行/列
【代码】
Sub选择WORD表格指定行()
Application.ScreenUpdating=False'关闭屏幕刷新
dqM=ThisWorkbook.Path&"\成绩表.doc"'带路径的WORD文件名称
SetwdWORD=CreateObject("Word.Application")'定义一个Word对象变量
SetdkDOC=wdWORD.Documents.Open(dqM)'创建文档对象
wdWORD.Visible=True'窗口可见
wdWORD.ActiveDocument.Tables
(1).Rows(3).Select'选择第3行
'wdWORD.ActiveDocument.Tables
(1).Rows(3).Range.Select'选择第3行
'wdWORD.Quit'关闭新建文档窗口
SetdkDOC=Nothing'释放存储空间
SetwdWORD=Nothing'释放存储空间
Application.ScreenUpdating=False'关闭屏幕刷新
EndSub
Sub选择WORD表格指定列()
Application.ScreenUpdating=False'关闭屏幕刷新
dqM=ThisWorkbook.Path&"\成绩表.doc"'带路径的WORD文件名称
SetwdWORD=CreateObject("Word.Application")'定义一个Word对象变量
SetdkDOC=wdWORD.Documents.Open(dqM)'创建文档对象
wdWORD.Visible=True'窗口可见
wdWORD.ActiveDocument.Tables
(1).Columns(3).Select'选择第3列
'wdWORD.Quit'关闭新建文档窗口
SetdkDOC=Nothing'释放存储空间
SetwdWORD=Nothing'释放存储空间
Application.ScreenUpdating=False'关闭屏幕刷新
EndSub
【提示】
选择最后一行
hs=wdWORD.ActiveDocument.Tables
(1).Rows.Count'行数
wdWORD.ActiveDocument.Tables
(1).Rows(hs).Select
选择最后一列
ls=wdWORD.ActiveDocument.Tables
(1).Columns.Count'列数
wdWORD.ActiveDocument.Tables
(1).Columns(ls).Select
⑸选定WORD表格中任意连续区域
①选择连续行
【代码】
Sub选择WORD表格指定的连续行()
Application.ScreenUpdating=False'关闭屏幕刷新
dqM=ThisWorkbook.Path&"\成绩表.doc"'带路径的WORD文件名称
SetwdWORD=CreateObject("Word.Application")'定义一个Word对象变量
SetwDoc=wdWORD.Documents.Open(dqM)'创建文档对象
wdWORD.Visible=True'窗口可见
SetwBG=wDoc.Tables
(1)'定义表格变量
wDoc.Range(wBG.Cell(2,1).Range.Start,wBG.Cell(wBG.Rows.Count,wBG.Columns.Count).Range.End).Select'选择第2行到最后一行
'wdWORD.Quit'关闭新建文档窗口
SetwBG=Nothing'释放存储空间
SetwDoc=Nothing'释放存储空间
SetwdWORD=Nothing'释放存储空间
Application.ScreenUpdating=False'关闭屏幕刷新
EndSub
②选择任意列
【代码】
Sub选择WORD表格任意指定的连续列()
Application.ScreenUpdating=False'关闭屏幕刷新
dqM=ThisWorkbook.Path&"\成绩表.doc"'带路径的WORD文件名称
SetwdWORD=CreateObject("Word.Application")'定义一个Word对象变量
SetwDoc=wdWORD.Documents.Open(dqM)'创建文档对象
wdWORD.Visible=True'窗口可见
SetwBG=wDoc.Tables
(1)'定义表格变量
wDoc.Range(wBG.Cell(1,4).Range.Start,wBG.Cell(wBG.Rows.Count,7).Range.End).Select'选择第4列到第7列
'wdWORD.Quit'关闭新建文档窗口
SetwBG=Nothing'释放存储空间
SetwDoc=Nothing'释放存储空间
SetwdWORD=Nothing'释放存储空间
Application.ScreenUpdating=False'关闭屏幕刷新
EndSub
说明:
列没有Range对象属性。
所以在选择连续列时不能使用如下代码:
wDoc.Range(wBG.Columns(4).Range.Start,wBG.Columns(7).Range.End).Select'选择第4列到第7列
③选择任意连续单元格区域
【代码】
Sub选择WORD表格任意指定的连续单元格区域()
Application.ScreenUpdating=False'关闭屏幕刷新
dqM=ThisWorkbook.Path&"\成绩表.doc"'带路径的WORD文件名称
SetwdWORD=CreateObject("Word.Application")'定义一个Word对象变量
SetwDoc=wdWORD.Documents.Open(dqM)'创建文档对象
wdWORD.Visible=True'窗口可见
SetwBG=wDoc.Tables
(1)'定义表格变量
wDoc.Range(wBG.Cell(5,4).Range.Start,wBG.Cell(7,7).Range.End).Select'选择第5行4列到第7行7列构成的单元格区域
'wdWORD.Quit'关闭新建文档窗口
SetwBG=Nothing'释放存储空间
SetwDoc=Nothing'释放存储空间
SetwdWORD=Nothing'释放存储空间
Application.ScreenUpdating=False'关闭屏幕刷新
EndSub
【小结】
选择WORD表格中的任意连续区域,关键是确定起始位置和终止位置。
选择任意连续单元格区域的关键代码格式如下:
文档对象.Range(表格对象.Cell(起始行,起始列).Range.Start,表格对象.Cell(终止行,终止列).Range.End).Select
4.设置WORD表格的单元格格式
设置WORD表格的单元格格式,包括单元格中的文本对齐格式和文字的字体、字号、是否加粗等格式。
WORD表格单元格中的文本的对齐格式,是指段落在水平方向的对齐方式和在垂直方向的对齐方式。
所以在设置单元格的对齐方式时,一要设置单元格中的文本段落在水平方向的对齐方式即左对齐、居中、右对齐,二要设置文本在垂直方向的对齐方式即靠上、居中、靠下。
【问题】
以WORD文档“成绩表.doc”为例,设置标题行各单元格数据“中部居中(即水平居中且垂直居中)”、“华文新魏”、字号“12”、“加粗”。
【代码】
Sub设置WORD表格的单元格格式()
Application.ScreenUpdating=False'关闭屏幕刷新
dqM=ThisWorkbook.Path&"\成绩表.doc"'带路径的WORD文件名称
SetwdWORD=CreateObject("Word.Application")'定义一个Word对象变量
SetdkDOC=wdWORD.Documents.Open(dqM)'创建文档对象
wdWORD.Visible=True'窗口可见
SetwdBG=wdWORD.ActiveDocument.Tables
(1)'创建表格对象
WithwdBG.Rows
(1).Range'表格第1行
.Font.Bold=True'加粗
.Font.Size=12'字号
.Font.Name="华文新魏"'字体
.ParagraphFormat.Alignment=1'水平居中
.Cells.VerticalAlignment=1'垂直居中
EndWith
'wdWORD.Quit'关闭新建文档窗口
SetwdBG=Nothing'释放存储空间
SetdkDOC=Nothing'释放存储空间
SetwdWORD=Nothing'释放存储空间
Application.ScreenUpdating=False'关闭屏幕刷新
EndSub
说明:
单元格数据居中即WORD程序菜单命令“表格/单元格对齐方式”的“中部居中”,指水平居中和垂直居中。
代码如下:
水平居中——单元格对象.ParagraphFormat.Alignment=1
垂直居中——单元格对象.Cells.VerticalAlignment=1
单元格对齐方式常量一览表
名称
常量代码
赋值
靠上两端对齐
wdAlignParagraphJustify
3
wdCellAlignVerticalTop
0
靠上居中
wdAlignParagraphCenter
1
wdCellAlignVerticalTop
0
靠上右对齐
wdAlignParagraphRight
2
wdCellAlignVerticalTop
0
中部两端对齐
wdAlignParagraphJustify
3
wdCellAlignVerticalCenter
1
中部居中
wdAlignParagraphCenter
1
wdCellAlignVerticalCenter
1
中部右对齐
wdAlignParagraphRight
2
wdCellAlignVerticalCenter
1
靠下两端对齐
wdAlignParagraphJustify
3
wdCellAlignVerticalBottom
3
靠下居中
wdAlignParagraphCenter
1
wdCellAlignVerticalBottom
3
靠下右对齐
wdAlignParagraphRight
2
wdCellAlignVerticalBottom
3
注意哦,表中的常量代码,在EXCEL中操作WORD时,由于后期绑定原因,必须用对应的赋值取代方可体现效果!
5.设置WORD表格的对齐格式
在WORD文档中的表格对齐,主要是指表格在页面水平方向的对齐,即左对齐、居中、右对齐。
对应WORD程序菜单命令“表格/表格属性/表格”中的三种对齐方式。
【代码】
Sub设置WORD文档中的表格对齐()
Application.ScreenUpdating=False'关闭屏幕刷新
dqM=ThisWorkbook.Path&"\放假通知.doc"'带路径的WORD文件名称
SetwdWORD=CreateObject("Word.Application")'定义一个Word对象变量
SetdkDOC=wdWORD.Documents.Open(dqM)'创建文档对象
wdWORD.Visible=True'窗口可见
dkDOC.Tables
(1).Rows.Alignment=1'水平居中
'wdWORD.Quit'关闭新建文档窗口
SetdkDOC=Nothing'释放存储空间
SetwdWORD=Nothing'释放存储空间
Application.ScreenUpdating=False'关闭屏幕刷新
EndSub
6.在WORD表格中插入(删除)行/列
⑴插入行/列
【问题】
与当前操作的EXCEL文件保存在同一位置的WORD文档“放假通知.doc”中,第一个表格有2行10列,在表格选定行的上/下方或者左/右侧插入新行/列(一行/列或多行/列)。
①在指定行的上/下插入行
【代码】
Sub在指定行的上下插入行()
Application.ScreenUpdating=False'关闭屏幕刷新
dqM=ThisWorkbook.Path&"\放假通知.doc"'带路径的WORD文件名称
SetwApp=CreateObject("Word.Application")'创建WORD对象
SetwDoc=wApp.documents.Open(dqM)'创建文档对象
wApp.Visible=True'窗口可见
wDoc.Tables
(1).Rows
(2).Select'选择指定行(第2行,可以根据表格实际行数修改此数字值)
wDoc.Application.Selection.InsertRowsAbove3'指定行上方插入3行
'wDoc.Application.Selection.InsertRowsBelow3'指定行下方插入3行
Zh=wDoc.Tables
(1).Rows.Count'计算插入新行后的表格总行数
MsgBox"成功新插入3行,当前表格共有"&Zh&"行",,"在指定列的上下插入行"
'wDoc.CloseTrue
'wApp.Quit
SetwApp=Nothing
SetwDoc=Nothing
Application.ScreenUpdating=False'关闭屏幕刷新
EndSub
说明:
wDoc.Application.Selection.InsertRowsAbove3——在所选择行的上方新插入3行。
如果执行代码——wDoc.Application.Selection.InsertRowsBelow3,则是在所选择行的下方新插入3行。
②在指定列的左/右插入列
【代码】
Sub在指定列的左右插入列()
Application.ScreenUpdating=False'关闭屏幕刷新
dqM=ThisWorkbook.Path&"\放假通知.doc"'带路径的WORD文件名称
SetwApp=CreateObject("Word.Application")'创建WORD对象
SetwDoc=wApp.documents.Open(dqM)'创建文档对象
wApp.Visible=T