VBScript/VBA设置Word文档的页眉或页脚
提醒:本页面将不再更新、维护或者支持,文章、评论所叙述内容存在时效性,涉及技术细节或者软件使用方面不保证能够完全有效可操作,请谨慎参考!
由于工作需要我们常常需要批量设置Word文档的页眉或者页脚,除了递归遍历Word文件外,我们还需要借助Word.Application组件来实现页眉或页脚的增加或修改。
Option Explicit
Const MSWORD_FILENAME = "Word文件路径"
Const wdSeekCurrentPageFooter = 10
Const wdAlignParagraphCenter = 1
Const wdAlignParagraphRight = 2
Const wdSeekMainDocument = 0
Dim wdApp
Set wdApp = WSH.CreateObject( "Word.Application")
wdApp.visible = False
Set doc = wdApp.Documents.Open(MSWORD_FILENAME)
doc.Activate ' 激活打开的文档
doc.PageSetup.FooterDistance = 30 ' 设置页脚到页面底边的距离
' 定位到页脚
wdApp.ActiveWindow.ActivePane.View.SeekView _
= wdSeekCurrentPageFooter
' 下面是针对字体的设置
wdApp.Selection.Font.Name = "Times New Roman"
wdApp.Selection.Font.Size = 14 ' 字号
wdApp.Selection.Font.Bold = True ' 加粗
wdApp.Selection.Text = "页脚0001" ' 页脚文本
' 页脚文本的位置wdAlignParagraphRight为居右
wdApp.Selection.ParagraphFormat.Alignment _
= wdAlignParagraphRight
' 返回定位到主文档
wdApp.ActiveWindow.ActivePane.View.SeekView _
= wdSeekMainDocument
doc.Save ' 保存刚才的修改
doc.Close ' 关闭文档
Set doc = Nothing
wdApp.visible = True
wdApp.Quit
Set wdApp = Nothing
这里要注意的是设置页脚到底边距离的时候需要用到页面设置的功能,即PageSetup.FooterDistance。
好问题! 我的程序和你的类似,但是大批量处理页眉页脚的时候,还是达不到效果。
@齐田 目前我在删除页脚方面也有些疑惑,尝试了很多方法,感觉都不是很好的。批量处理可以参考《采用插件机制的批量文件扫描及进程处理工具》或者《利用Scripting.FileSystemObject组件来枚举文件》,VBA中也可以试试《VBScript/VBA批量合并多个Word文件到一个文件》文末附加的方法。
Option Explicit Const MSWORD_FILENAME = "D:\My Documents\2011年度专业技术资格委托评审.doc" 'Word文件路径"???想改为变量 Const wdSeekCurrentPageFooter = 10 Const wdAlignParagraphCenter = 1 Const wdAlignParagraphRight = 2 Const wdSeekMainDocument = 0 Sub WSH() Dim wdApp 'WSH出错,提示缺少变量 Set wdApp = WSH.CreateObject("Word.Application") wdApp.Visible = False Set doc = wdApp.Documents.Open(MSWORD_FILENAME) doc.Activate ' 激活打开的文档 doc.PageSetup.FooterDistance = 30 ' 设置页脚到页面底边的距离 ' 定位到页脚 wdApp.ActiveWindow.ActivePane.View.SeekView _ = wdSeekCurrentPageFooter ' 下面是针对字体的设置 wdApp.Selection.Font.Name = "Times New Roman" wdApp.Selection.Font.Size = 14 ' 字号 wdApp.Selection.Font.Bold = True ' 加粗 wdApp.Selection.Text = "页脚0001" ' 页脚文本 ' 页脚文本的位置wdAlignParagraphRight为居右 wdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphRight ' 返回定位到主文档 wdApp.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument doc.Save ' 保存刚才的修改 doc.Close ' 关闭文档 Set doc = Nothing wdApp.Visible = True wdApp.Quit Set wdApp = Nothing End Sub 1、Const MSWORD_FILENAME = "D:\My Documents\2011年度专业技术资格委托评审.doc" 'Word文件路径"???想改为变量 2、'WSH出错,提示缺少变量 Set wdApp = WSH.CreateObject("Word.Application") 3、'我也想在excel中用vba设置doc文件页脚页码??Dim appWD As Word.Application Set appWD = CreateObject("Word.Application") '运行错误,提示类型不匹配? 在办公室电脑运行正常;已引用了word控件,家中笔记本提示:active x 不能创建对象 谢谢
1、注意这行Set doc = wdApp.Documents.Open(MSWORD_FILENAME),你把MSWORD_FILENAME改成变量定义即可,比如这样的:
2、注意在Windows Script Host环境下,WSH
和WScript
都是等同保留的宿主对象,不建议用作Sub过程名,所以建议将Sub WSH()
的WSH改为其他名字。 3、在Excel VBA环境下可以直接使用Application
而不需要CreateObject
。