资源描述
在EXCEL中用VBA创建WORD文档表格
编辑:madmlwt
1. 在新建WORD空白文档中创建一个表格
【要求】
新建一个WORD空白文档,在新文档中创建一个4行5列的空白表格,在 空白表格的第一个单元格写入“第一单元格”、最后一个单元格中写入“最后- 个单元格二
【代码】
Sub创建一个WORD表格()
Application.ScreenUpdating = False '关闭屏幕刷新
dqT = Timer,程序运行开始时间(秒)
dqM = ThisWorkbook.Name '要创建的WORD文件名称(当前工作簿名称)
Set wordAppl = CreateObject(nWord.Application")'定义一个 Word 对象变量
With wordAppl.Documents.Add '创建一个新的Word文档
.ActiveDocument.tables.Add Range:=.Selection.Range, NumRows:=4, N umColumns:=5,插入 4X5 表格Set myRange = .ActiveDocument.tables( 1)'创建表格对象
With myRange,Cell(l, 1).Range.insertAfter ”第一个单元格”,第一个单元格中写
入字符第一个单元格.Cell(.Rows.Count, .Columns.Count).Range.insertAfter "最后一个
单元格”’第二个单元格中写入字符最后一个单元格End With .ActiveDocument.SaveAs ThisWorkbook.Path & nV & dqM & ”.doc"
保存新建Word文档与当前文件相同路径
.Quit,关闭新建文档窗口
End With
Set wordAppl = Nothing 释放存储空间
MsgBox Chr(10) & ”成功创建一个 WORD 表格!” _& Chr(10) & Chr(10) & ”共用时"& Timer - dqT & "秒二,L
eft(dqM, Len(dqM) - 4)
Application.ScreenUpdating = False '关闭屏幕刷新
End Sub
说明:
WORD文档中的表格,与EXCEL中的表格概念基本一致,只是表达方式有所区别。tables表示表格对象,tables(l)表示第1个表格(以此类推)。表中的一 个空格也叫单元格,用Cell(行数,列数)表示。
表格行/列数计算代码:
表格行数wordAppl.ActiveDocument.tables(l) .Rows.Count
表格列数wordAppl.ActiveDocument.tables( 1) .Columns.Count
2. 新建一个文档写入两个段落再创建一空白表格
【要求】
第一段落写入“创建一个WORD表格”,字体“黑体”、字号20、对齐“居 中”;第二段落写入“作者:老顽童”,字体“华文行楷”、字号16、对齐“居中"。
【代码】
Sub CommandButton 1 _Click()
Application.ScreenUpdating = False '关闭屏幕刷新
dqT = Timer程序运行开始日寸间(秒)
Set wordAppl = CreateObject(”Word.Application")'定义一个 Word 对象变量
With wordAppl.Documents.Add,创建一个新的Word文档
'第一段设置.Selection.Font.Name ="黑体”’字体
.Selection.Font.Size = 20,字号.Selection.Font.Bold = True '加粗
.Selection.TypeText Text:=”创建一个 WORD 表格”’第一个段落文本.Selection.ParagraphFormat. Alignment = 1 '居中
'第二段设置.Selection.TypeParagraph '插入新的段落
.Selection.Font.Name = ”华文行楷”,字体.Selection.Font.Size = 16,字号
.Selection.Font.Bold = False '不加粗.Selection.TypeText Text:=n作者:老顽童”’新段落中写入的文本
.Selection.ParagraphFormat. Alignment = 1 '居中'插入表格
,Selection.TypeParagraph '插入新的段落.Selection.ParagraphFormat.Alignment = 3 '左对齐
.ActiveDocument.Tables.Add Range:=.Selection.Range, NumRows:=4, NumColumns:=5,插入 4X5 表格
'保存与关闭.ActiveDocument.SaveAs ThisWorkbook.Path & "'文字表格.doc”,保存
新建Word文档与当前文件相同路径.Documents.Close,关闭新建文档
.QuiL关闭新建文档窗口
End With
Set wordAppl = Nothing,释放存储空间
MsgBox Chr(lO) & ”成功创建一个 W0RD 文档!” _& Chr(lO) & Chr(lO) & ”文档第一段写入文本 创建一个 WORD
& Chr(lO) & Chr(lO) & ”文档第二段写入文本 作者:老顽童& Chr(lO) & Chr(lO) & ”创建整个 WORD表格文档用时” & Ti
mer - dqT & "秒二,"创建表格信息”
Application.ScreenUpdating = False '关闭屏幕刷新
End Sub
段落对齐设置值说明:
左对齐——0或3,居中——1,右对齐——2,分散对齐——4o
3. 打开一个已经存在的文档创建一个空白表格
【要求】
在文档“暑假通知书.doc”中第6段落后插入学生个人成绩表(2行12列), 第一行写入标题并设置字体及对齐格式;在文档末尾插入一个2行1列表格,第 一个单元格写入“意见或建议:”,第二个单元格写入“家长签名:”。
⑴在指定段落间创建一个表格
【代码1】
Private Sub CommandButton 1 _Click()
Application.ScreenUpdating = False '关闭屏幕刷新
dqT = Timer,程序运行开始时间(秒)
dqM = ThisWorkbook.Path & n\WORD文档'暑假通知书.doc”,带路径的 WORD文件名称
Set wdWORD = CreateObject("Word.Application")'定义一个 Word 对象变量
Set dkDOC = wdWORD.Documents.Open(dqM) 1 创建文档对象
wdWORD.ActiveDocument.Paragraphs(6).Range.InsertParagraphAfter '第 6 段落后面插入一个新段落
wdWORD.ActiveDocument.Paragraphs(7).Range.Select 1 选中插入的新段落
dkDOC.Tables.Add Range:=wdWORD.Selection.Range, NumRows:=2, NumColumns:=12,插入一个2行12列表格
Set wdBG = wdWORD.ActiveDocument.Tables(l)'创建表格对象
With wdBG,,表格第1行写入列标题・Cell(l, 1)= ”姓名”
.Cell(l, 2)= ”班级”・Cell(l, 3)= ”语文”
,Cell(l, 4)= ”数据”.Cell(l, 5)= ”英语”
・Cell(l, 6)= ”物理”・Cell(l, 7)= ”政治”
,Cell(l, 8)= ”历史”・Cell(l, 9)= ”地理”
・Cell(l, 10)= ”生物”・Cell(l, 11)= ”总分”
,Cell(l, 12)= ”名次”With .Rows(l).Range '表格第一行
.Font.Size = 10 字号.Font.Name = ”宋体”字体
.Font.Bold = True '加粗.ParagraphFormat. Alignment = 1 '居中
End With
End With
wdWORD.ActiveDocument.SaveAs '保存修改 wdWORD.Quit,关闭新建文档窗口
Set dkDOC = Nothing '释放存储空间
Set wdWORD = Nothing '释放存储空间
MsgBox Chr(10) & ”成功创建一个 WORD 表格!”& Chr(lO) & Chr(lO) & ”共用时"& Timer . dqT & "秒二,L
eft(Dir(dqM), Len(Dir(dqM)) - 4)
Application.ScreenUpdating = False '关闭屏幕刷新
End Sub
⑵在文档末尾创建一个表格
【代码2】
Private Sub CommandButton 1 _Click()
Application.ScreenUpdating = False '关闭屏幕刷新
dqT = Timer 1程序运行开始时间(秒)
dqM = ThisWorkbook.Path & H\WORD 文档'暑假通知书.doc”,带路径的 WORD文件名称
Set wdWORD = CreateObject(nWord.Application")'定义一个 Word 对象变
Set dkDOC = wdWORD.Documents.Open(dqM) !创建文档对象
zDS = 前文档段落总数
wdWORD.ActiveDocument.Paragraphs(zDS).Range.InsertParagraphAfter '第 zDS段落后面插入一个新段落
wdWORD. ActiveDocument.Paragraphs(zDS + 1).Range.Select 1 选中插入的新段落
dkDOC.Tables.Add Range:=wdWORD.Selection.Range, NumRows:=2, NumColumns:=l,插入一个2行1列表格
Set wdBG = wdWORD.ActiveDocument.Tables(l)'创建表格对象
With wdBG 1,表格写入文本,Cell(l, 1)="家长意见或建议:”
.Cell(2, 1)= ”家长签名:”With .Range '表格
.Font.Bold = True '字型加粗.Font.Size = 12 '字号
.Font.Name = ”宋体”字体.ParagraphFormat.Alignment = 0 '左对齐
End With
End With
wdWORD.ActiveDocument.SaveAs '保存修改
wdWORD.Quit 1关闭新建文档窗口
Set dkDOC = Nothing '释放存储空间
Set wdWORD = Nothing '释放存储空间
MsgBox Chr(10) & ”成功创建一个 WORD 表格!”& Chr(10) & Chr(10) & ”共用时 ” & Timer . dqT & ” 秒二,L
eft(Dir(dqM), Len(Dir(dqM)) - 4)
Application.ScreenUpdating = False '关闭屏幕刷新
End SubL—a—a—a—
说明:
①计算整个文档的段落总数
zDS = ,当前文档段落总数
计算一个WORD文档的段落总数,以段落标记为准,一个段落标记表示 个段落数。
②对整个表格设置格式
wdWORD.ActiveDocument.Tables( 1) .Range ,表示整个表格对象。
wdWORD.ActiveDocument.Tables(l) .Range.Font ,表示整个表格对象的文字。
wdWORD.ActiveDocument.Tables(l) .Range.ParagraphFormat ,表示整个表格对象文字的对齐方式。
在WORD表格中,一个单元格就是一个段落。对单元格中的文字设置对齐 方式,就是设置一个段落格式(ParagraphFormat)□
小结:
在WORD文档中插入表格,关键就是要指明插入表格的位置——文档开始 位置、指定某个段落之后(或之前)、文档末尾等三种可能。归根结底就是在指 定段落前/后(或左/右)插入表格。
表示在指定段落左或右插入表格代码:
InsertParagraphBefore左或前插入
InsertParagraphAfter右 或后插 入
指定某个段落之后插入表格步骤:
第一步 插入一个新段落 wdWORD.ActiveDocument.Paragraphs(段落数).Ran ge. InsertParagraphAfter
注意:
在指定某个段落前插入一个新段落代码wdWORD.ActiveDocument.Paragrap hs(段落数).Range.InsertParagraphBefore
第二步选中插入的新段落wdWORD.ActiveDocument.Paragraphs(段落数+ l).Range.Select
第三步 插入表格 dkDOC.Tables.Add Range:=wdWORD.Selection.Range, Nu mRows:=行数,NumColumns:=列数
下面请关注《在EXCEL中用VBA设置WORD表格常规属性》
展开阅读全文