ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] word vba批量页面设置

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-12-12 12:34 | 显示全部楼层 |阅读模式
我想对指定的word文档批量处理,处理成页边距全是2.5,同时纸张是16K
使用以下代码,出现问题
Sub 批量格式设置()
Dim MyDialog As FileDialog, vrtSelectedItem As Variant, Doc As Document
Set MyDialog = Application.FileDialog(msoFileDialogFilePicker)
With MyDialog
.Filters.Clear
.Filters.Add "所有 WORD 文件", "*.doc", 1
.AllowMultiSelect = True
If .Show = -1 Then
Application.ScreenUpdating = False
For Each vrtSelectedItem In .SelectedItems
Set Doc = Documents.Open(FileName:=vrtSelectedItem, Visible:=False)
With Doc
With .PageSetup
.TopMargin = CentimetersToPoints(2.5)
.BottomMargin = CentimetersToPoints(2.5)
.LeftMargin = CentimetersToPoints(2.5)
.RightMargin = CentimetersToPoints(2.5)
.PageWidth = CentimetersToPoints(18.4)
.PageHeight = CentimetersToPoints(26)
End With
.Save
End With
Doc.Close
Next
Application.ScreenUpdating = True
End If
End With
MsgBox "格式化文档操作设置完毕!", vbInformation
End Sub

第一个是,虽然处理后,显示设置完毕,而且word界面看不到那些处理过的文档名,但在vb中,却还是能看到处理过的文档的project,而且,此时打开一个,已经处理过的文档,会发现没有任何显示,关闭的话会提示是否保存,选择保存,再打开,则能看到文档
第二个是,通过上面方法打开的文档,进入页面设置,发现,页边距是正确的,但纸张大小不正确,尺寸没问题,但纸张里显示的却是B5(JIS)

请问以上代码如何修改,解决掉这二个问题?
谢谢高手。

TA的精华主题

TA的得分主题

发表于 2011-12-12 13:13 | 显示全部楼层
.PageWidth = CentimetersToPoints(18.4)
.PageHeight = CentimetersToPoints(26)
将上面的数据修改为:
.PageWidth = CentimetersToPoints(21)
.PageHeight = CentimetersToPoints(29.7)

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-12 14:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
tangqingfu 发表于 2011-12-12 13:13
.PageWidth = CentimetersToPoints(18.4)
.PageHeight = CentimetersToPoints(26)
将上面的数据修改为:

21*29.7这不是A4的版式吗?
我想实现设置成16开。18.4*26就是16开。但纸张里却是B5
另外,每处理一个doc,不能完全退出这个处理的文档
麻烦高手试一下这个代码。运行后,真的在vb里,能看到处理的文件的project

TA的精华主题

TA的得分主题

发表于 2011-12-12 14:55 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-12 19:00 | 显示全部楼层
szqhb 发表于 2011-12-12 14:55
试了一下,很正常的

我运行代码后,虽然主窗口没有处理文件的名称和内容,但在vb中的project中还能看到处理过的那个文件,请问能分析一下原因吗?
我是2003和2010同时安装的。

TA的精华主题

TA的得分主题

发表于 2016-12-20 11:24 | 显示全部楼层
tangqingfu 发表于 2011-12-12 13:13
.PageWidth = CentimetersToPoints(18.4)
.PageHeight = CentimetersToPoints(26)
将上面的数据修改为:

tangqingfu老师:如果是EXCEL一个工作簿里有多个相似名称的工作表(都是“XX班”),怎样统一设置页面打印,多谢指教。

TA的精华主题

TA的得分主题

发表于 2016-12-23 16:08 | 显示全部楼层
Set Doc = Documents.Open(FileName:=vrtSelectedItem, Visible:=False)
Set Doc = Documents.Open(FileName:=vrtSelectedItem, Visible:=True)
试试看。

TA的精华主题

TA的得分主题

发表于 2016-12-26 19:52 | 显示全部楼层
向大师学习,做不出还请大师!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-13 13:22 , Processed in 0.032804 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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