ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

设置页边距出错。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-12-21 09:28 | 显示全部楼层 |阅读模式
    Dim mysect As Sections
    Set mysect = ActiveDocument.Sections

    With mysect.PageSetup
        .TopMargin = CentimetersToPoints(3.5)      '顶端边距
        .BottomMargin = CentimetersToPoints(2.5)   '底端边距
        .LeftMargin = CentimetersToPoints(2.5)     '左边距
        .RightMargin = CentimetersToPoints(2.5)    '右边距
        .HeaderDistance = CentimetersToPoints(1.5)
        .FooterDistance = CentimetersToPoints(1.5)
    End With
错误报“运行时错误'4608',数值超出范围”
设置页边距出错,有的文档不报错,有的文档就报错。
不解,还记大侠指点。

TA的精华主题

TA的得分主题

发表于 2015-12-21 14:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主,你是不是要在所有“节”中循环,设置各个“节”为一样的页边距?请试试下面的代码:
Sub test()
    Dim s As Section
    For Each s In ActiveDocument.Sections
        With s.PageSetup
            .TopMargin = CentimetersToPoints(3.5)      '顶端边距
            .BottomMargin = CentimetersToPoints(2.5)   '底端边距
            .LeftMargin = CentimetersToPoints(2.5)     '左边距
            .RightMargin = CentimetersToPoints(2.5)    '右边距
            .HeaderDistance = CentimetersToPoints(1.5)
            .FooterDistance = CentimetersToPoints(1.5)
        End With
    Next
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-12-21 17:06 | 显示全部楼层
413191246se 发表于 2015-12-21 14:21
楼主,你是不是要在所有“节”中循环,设置各个“节”为一样的页边距?请试试下面的代码:
Sub test()
   ...

恩这个是可以。但是效率有点低。文档大点要处理好长时间。不能对节这个集合直接设定页边距吗。

TA的精华主题

TA的得分主题

发表于 2015-12-22 10:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主,你的意思是对所有“节”设置同样的页边距,那为什么不录制一个宏,对“整个文档”进行设置页边距呢?而不必在每个“节”间循环。——我实践了一下,可行。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-12-22 17:55 | 显示全部楼层
Application.ScreenUpdating = False  '关闭操作过程
    Application.DisplayAlerts = False     '关闭EXCEL的提示框


    With ActiveDocument.PageSetup
        .TopMargin = CentimetersToPoints(3.5)      '顶端边距
        .BottomMargin = CentimetersToPoints(2.5)   '底端边距
        .LeftMargin = CentimetersToPoints(2.5)     '左边距
        .RightMargin = CentimetersToPoints(2.5)    '右边距
        .HeaderDistance = CentimetersToPoints(1.5)
        .FooterDistance = CentimetersToPoints(1.5)
    End With
直接用文档对象设置可以修改。
不过有一个费解的问题。我在一个空的文档插入了N个节,并试验用此代码可以一次性可以设置所有节的页边距。
但是换了一个文档,有数据的文档,也有个N个节,N页。就报错。代码还是原来的代码。在这个有数据的代码就报错“运行时错误‘4608’:数值超出范围”。实在是费解。
望大家帮我看看。

TA的精华主题

TA的得分主题

发表于 2015-12-23 09:13 | 显示全部楼层
Application.DisplayAlerts = False     '关闭EXCEL的提示框-------楼主,这明明是 WORD VBA,你怎么把 EXCEL 也带进来了?——楼主,你的原始问题是什么?咱们重新考虑一下。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-12-24 14:20 | 显示全部楼层
413191246se 发表于 2015-12-23 09:13
Application.DisplayAlerts = False     '关闭EXCEL的提示框-------楼主,这明明是 WORD VBA,你怎么把 EXC ...

目的是一次性设置定页边距,现在目前的方案是历遍所有节,一个节一个节的设置。效率低。用documentc对象直接设定会出溢出错误。

TA的精华主题

TA的得分主题

发表于 2015-12-25 09:46 | 显示全部楼层
楼主,如果你想把所有“节”的页边距设置为相同,不如录制个宏,或手动即可,而不必遍历“节”。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-8 21:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2015-12-25 09:46
楼主,如果你想把所有“节”的页边距设置为相同,不如录制个宏,或手动即可,而不必遍历“节”。

只是想弄明白怎么一回事。

TA的精华主题

TA的得分主题

发表于 2016-3-2 11:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
遇到通用的问题,寻找答案中
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 22:58 , Processed in 0.023360 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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