VBA对象引用的前期绑定与后期绑定
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VBA对象引用的前期绑定与后期绑定
编辑:madmlwt
前言
系列问题涉及:
1.操作环境是:Ofeice 2003完整版,Win XP操作系统。
2.探讨主方向:在EXCEL中用VBA操作WORD表格,进行EXCEL数据与WORD数据的相互读写及相应格式设置。
3.引用WORD程序的方法:后期绑定。不需要在对象库中去勾选Microsoft Word 11.0 Object Library对象。
4.资料收集整理:网络查询、Ofeice 2003相关程序自身的VBA帮助、个人理解,本人是个编辑者。
5.相关实例:网络搜索引用、个人原创,在EXCEL中实际操作通过。
综上,在后续的系列文章中的诸多说法、实例中,不再一一重复阐述说明。编辑此系列问题,可能已经滞后,仅供有此需要的朋友参考借鉴!
如有雷同,敬请见谅、免责!
一、问题的提出
试图在EXCEL中用VBA操作WORD文档,结果在WORD中能够正常使用的一些方法或属性,在EXCEL中不能使用或使用后没有达到应该有的效果。
【例子】
在EXCEL中用VBA操作。
首先创建一个空白的新WORD文档,再写入2句话(作为2个段落),然后分别对这二个段落进行字体、字号和居中设置。
【要求】
在EXCEL中用VBA操作WORD文档时,VBA代码编辑过程中,不直接引用Microsoft Word 11.0 Object Library对象,采用后期绑定Set wordAppl = CreateObject("Word.Application") 定义一个Word对象变量。
【操作】
1.直接在WORD文档中运行代码
⑴在已经存在的操作
假定上面要求的WORD文档已经创建,打开该文档。在键盘上按组合键Alt+F11,打开WORD代码编辑窗口。在左边的“工程-Normal”下面窗格中双击“Project(当前打开的WORD文档名称)”下面的“引用Normal”图标,右边显示当前WORD文档的代码编辑窗口,复制并粘贴下面的代码。
Sub 设置()
With ActiveDocument.Paragraphs(1).Range
.Font.Size = 18 '字号
= "黑体" '字体
.Font.Bold = wdToggle '字型加粗
.ParagraphFormat.Alignment = wdAlignParagraphCenter '水平居中End With
End Sub
单击代码编辑窗口上方工具栏上的绿色三角形按钮(或按键盘上的F5),运行上述代码,可以看到你打开的WORD文档中的第一段文本,按要求进行了字体设置和水平居中。
可见,代码正常运行且达到预期目标!
⑵创建一个新的WORD文档
打开一个任意已经存在的WORD文档,在键盘上按组合键Alt+F11,打开WORD代码编辑窗口。在左边的“工程-Normal”下面窗格中双击“Project(当前打开的WORD文档名称)”下面的“引用Normal”图标,右边显示当前WORD 文档的代码编辑窗口,复制并粘贴下面的代码。
Sub 设置()
Application.ScreenUpdating = False '关闭屏幕刷新
Documents.Add '创建一个新的Word文档
Selection.TypeText Text:="创建WORD表格模型"'写入第一段文字
…………
With ActiveDocument.Paragraphs(1).Range'对第一个段落进行格式设置
.Font.Size = 18 '字号
= "黑体" '字体
.Font.Bold = wdToggle '字型加粗
.ParagraphFormat.Alignment = wdAlignParagraphCenter '水平居中(问题代码)
End With
ActiveDocument.SaveAs FileName:=ThisDocument.Path & "\新建WORD文档.doc" '保存新建Word文档与当前WORD文件相同位置
ActiveWindow.Close '关闭新建文档
Application.ScreenUpdating = False '关闭屏幕刷新
End Sub
2.在EXCEL中运行代码
打开一个EXCEL工作簿,任指定一个名字保存打开的工作簿于任意位置(为便于操作最后就保存到桌面)。在键盘上按组合键Alt+F11,打开EXCEL代码编辑窗口。在菜单命令中单击“插入”打开列表命令后再单击“模块”,显示当前EXCEL文档的代码编辑窗口,复制并粘贴下面的代码。
⑴创建一个新的WORD文档
Sub 设置()
Application.ScreenUpdating = False '关闭屏幕刷新
Set wordAppl = CreateObject("Word.Application") '定义一个Word对象变量
dqM= '当前工作簿名称
With wordAppl
.Documents.Add '创建一个新的Word文档
.Selection.TypeText Text:="创建一个WORD表格模型" '写入第一个段落文本
…………
With .ActiveDocument.Paragraphs(1).Range'对第一个段落进行格式设置
.Font.Size = 18 '字号
= "黑体" '字体
.Font.Bold = wdToggle '字型加粗
.ParagraphFormat.Alignment = wdAlignParagraphCenter '水平居中(问题代码)
End With
.ActiveDocument.SaveAs ThisWorkbook.Path & "\" & Left(dqM, Len(dqM) - 4) & ".doc" '保存新建Word文档与当前工作簿相同名称和位置.Documents.Close '关闭新建文档
.Quit '关闭新建文档窗口
End With
Set wordAppl = Nothing '释放存储空间
Application.ScreenUpdating = False '关闭屏幕刷新
End Sub
单击代码编辑窗口上方工具栏上的绿色三角形按钮(或按键盘上的F5),运行上述代码。
最小化当前工作簿窗口,在当前工作簿保存的桌面上,找到以当前工作簿名称命名的WORD文件,双击打开这个WORD文档。
效果一目了然,第一段落仅设置了字体格式,但并没有水平居中!
换句话说,代码.ParagraphFormat.Alignment = wdAlignParagraphCenter 虽然运行通过,但没有产生本质的属性功能。
⑵打开一个已经存在的WORD文档