Word2010 vba 页眉替换问题

我需要把每个分页中页眉的部分文字替换,替换形式为:ABCDEF变为111CDF。我尝试写了下列代码:dimmysecassectionforeachmysecinacti... 我需要把每个分页中页眉的部分文字替换,替换形式为:ABCDEF变为111CDF。
我尝试写了下列代码:

dim mysec as section
for each mysec in activedocument.sections
mysec.headers(1).range.text=replace(mysec.headers(1).range.text,"ABC","111")
next
出现问题:执行替换后,自动新增一行,导致全文页码变动,尤其是我执行多次替换不同文字时。
请问:为什么会自动新增一行?如何解决该问题?
我的思路是尝试在replace(mysec.headers(1).range.text & ***, ,)在其中***追加代码,但是不知道怎么写。
我刚开始接触VBA,请指点。谢谢!
展开
 我来答
真真真白丁
推荐于2016-02-04 · TA获得超过8523个赞
知道大有可为答主
回答量:4644
采纳率:85%
帮助的人:1745万
展开全部
亲,这一句要改一下:
mysec.Headers(1).Range.Text = Replace(Replace(mysec.Headers(1).Range.Text, "ABC", "111"), Chr(13), "")

因为,如果您注意观察,会发现页眉的文字最后都有一个回车字符,就如同段落、表格的末尾一样,这个字符也是页眉的一部分。你可以用debug.print len(mysec.headers(1).range.text)看一下页眉的长度,是包含了末尾回车字符的(chr(13))。所以,当你用replace替换之后,这个回车字符仍然在。

注意:关键是给header.range.text赋值时,word vba默认是不含最后一个回车字符的;这样更方便编程,否则每次都要记住在末尾加一个chr(13),岂不把人烦死!

最后,解决方法就是,再使用一次replace,在赋值前把回车符去掉。
追问
你好,Repalce(Replace(,,,),,)这样嵌套也行?我之前想到的解决办法是在替换ABC的下面重复一条replace替换chr(13);
还有,debug.print len这句话的结果在哪?我在页眉中没看到;

另外,我在文本框中的替代也使用了replace的功能,但是没有出现默认包含回车的情况,是否只有是页眉这地方会自动默认包含回车?
追答
replace函数的嵌套使用,当然可以啦。已经测试过了。
文本框的text属性值是否包含了最后的换行符,您可以在立即窗口用len函数测试一下长度便知。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
博思aippt
2024-07-20 广告
作为深圳市博思云创科技有限公司的工作人员,对于Word文档生成PPT的操作,我们有以下建议:1. 使用另存为功能:在Word中编辑完文档后,点击文件->另存为,选择PowerPoint演示文稿(*.pptx)格式,即可将文档内容转换为PPT... 点击进入详情页
本回答由博思aippt提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式