ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 14144|回复: 13

[求助] 求给word文档添加页眉页脚的VBA代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-9-11 11:33 | 显示全部楼层 |阅读模式

求给word文档添加页眉页脚的VBA代码,最好有中文解释,小弟对VBA不熟

1、给word文档添加页眉页脚的

2、第一,二页页眉页脚与第三页以后的不同,如第一,二页不要页眉页脚,页码从第三页开始计算,即第三页页码为第1页

TA的精华主题

TA的得分主题

发表于 2006-9-11 11:56 | 显示全部楼层

你希望分节不分节?

分节可以实现页码的重新设置,第一、第二页没有页眉页脚。

直接使用域代码也可以实现你的要求,相当于第1、2页的页码为“”(空空),第3页开始做为第1页。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-9-11 15:19 | 显示全部楼层

如果是直接在WORD里面做

我也能做到

我是想调用EXCEL中某个单元格的数据作为页脚

这个单元格的数据是个变量.

TA的精华主题

TA的得分主题

发表于 2006-9-12 10:34 | 显示全部楼层

以下代码供参考:

Sub Example()
'从指定页的下一页开始计页码,如指定为10,则第11页为1.
    Dim wdDoc As Word.Document, wdRange As Word.Range
    Dim FieldRange As Word.Range, strField As String
    Dim myPages As Integer, CodesLenth As Integer
    Dim PageLenth As Integer, EndRange As Long
    Dim StartRange As Long
    myPages = 12
    strField = "IF PAGE <= " & myPages & " " & """""" & " =PAGE-" & myPages
    CodesLenth = VBA.Len(strField)
    PageLenth = Len(CStr(myPages))
    Set wdDoc = Word.ActiveDocument
    With wdDoc
        Set wdRange = .Sections(1).Headers(wdHeaderFooterPrimary).Range
        wdRange.Text = strField
        wdRange.SetRange 11 + PageLenth + 5, 11 + PageLenth + 5 + 4
        .Fields.Add Range:=wdRange, Type:=wdFieldEmpty, PreserveFormatting:=False
        EndRange = wdRange.Paragraphs(1).Range.End - 1
        wdRange.SetRange wdRange.Start - 1, EndRange
        .Fields.Add Range:=wdRange, Type:=wdFieldEmpty, PreserveFormatting:=False
        StartRange = wdRange.Paragraphs(1).Range.Start
        wdRange.SetRange StartRange + 3, StartRange + 7
        .Fields.Add Range:=wdRange, Type:=wdFieldEmpty, PreserveFormatting:=False
        EndRange = wdRange.Paragraphs(1).Range.End - 1
        wdRange.SetRange StartRange, EndRange
        .Fields.Add Range:=wdRange, Type:=wdFieldEmpty, PreserveFormatting:=False
        Set wdRange = .Sections(1).Headers(wdHeaderFooterPrimary).Range
        wdRange.Fields.Update
    End With
End Sub

按说楼主既然在WORD中能做到,我觉得我可能写得多余了。

呵呵。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-9-13 12:00 | 显示全部楼层

谢谢版主,这个程序我试过了

运行正常

我还想让EXCEL中某个单元格的数据作为WORD的页眉和页脚要如何改程序啊

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-9-13 12:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

页眉为:公司名称    公司电话号码

页脚为:第X页,共Y页      打印时间(格式为:YYYY-MM-DD)

另外:第一,第二页不要页眉页脚,第三页开始要页眉页脚,

公司名称,公司电话号码, 打印时间要求从EXCEL表中的相应单元格引用.

假设该文件有10页(含第1,2页),打印时间为2006-9-20,那么,第三页的页脚为:第1页,共8页  2006-9-20

[此贴子已经被作者于2006-9-13 12:15:11编辑过]

TA的精华主题

TA的得分主题

发表于 2006-9-14 06:25 | 显示全部楼层
QUOTE:
以下是引用jiangrushu在2006-9-13 12:13:19的发言:

页眉为:公司名称    公司电话号码

页脚为:第X页,共Y页      打印时间(格式为:YYYY-MM-DD)

另外:第一,第二页不要页眉页脚,第三页开始要页眉页脚,

公司名称,公司电话号码, 打印时间要求从EXCEL表中的相应单元格引用.

假设该文件有10页(含第1,2页),打印时间为2006-9-20,那么,第三页的页脚为:第1页,共8页  2006-9-20


如果楼主说,所有生成的WORD文件,均为第一、第二页不要页眉页脚,第三页开始要页眉页脚,我觉得楼主前后的问题很不一致,我几乎白为你调试了一段时间了。

况且楼主说,直接在WORD里面做,你也会了,那么,你该不该告诉我,你是怎么做的呢?你不觉得这样浪费了帮助你的人很多时间吗?因为我在二楼问题,希不希望分节,你至今未予回复,要知道,用不用分节,代码实现起来,差别很大!

TA的精华主题

TA的得分主题

发表于 2006-9-14 08:38 | 显示全部楼层

都是一些高手啊,这下我感到高兴了,因为过不了多久我也会成为高手了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-9-14 15:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

版主很对不起您,是我没有说清楚,但您你上面的程序还是要用的,

除的实现上面的功能,还要实现其他功能

关于是否分节的问题,我觉得只要能实现

分不分节没关系,哪里简单,就用哪里方案

TA的精华主题

TA的得分主题

发表于 2010-6-8 13:14 | 显示全部楼层

回复 5楼 jiangrushu 的帖子

我真没试出来,总是不能正确显示页码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-12 01:48 , Processed in 0.062766 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表