ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 任意选择单个或多个Sheet打印

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-1-28 15:36 | 显示全部楼层 |阅读模式
本帖最后由 jave000 于 2022-1-29 11:27 编辑

使用Ctrl单击Sheet可以多重打印,但如果忘了取消多选,总会不小心多重编辑,内容面目全非。请问如何使用代码来定义各个Sheet,并随意选择进行打印?按照每个Sheet的默认打印纸张和配置,如果还能把配置内容写进代码,那就更好了。
我有多个表格,各不相同,其中需要打印的Sheet也是相对固定的,所以每个表格都有一套自己的定义。但我会默认把不需要打印的Sheet放在最后。
我在论坛没搜到这个功能,感谢




最终结果如下,提供给有同样需求的人,感谢准提部林lele6809的无私帮助,上面是消除所有公式的按钮,下面是定制打印的按钮:

Sub ClearFormulas()
ActiveSheet.UsedRange = ActiveSheet.UsedRange.Value
End Sub
Sub DesignPrint()
    Sheets(Array("Cover", "MTO")).PrintOut
    ActiveSheet.Select
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-1-28 15:46 | 显示全部楼层
image.png
比如这个表格,我需要固定只打印Cover和MTO,虽然我把这俩放在最前面,但查看VBA却是Sheet2和Sheet4,不是连续的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-1-29 09:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
经过昨天学习,代码已经找到好几种,但结果都是两个sheet单独打印,不能一起。就算我把打印机设置成appending to exsiting pdf也不合适,因为页码会不对。现在就差这一个难题了

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-1-29 09:43 | 显示全部楼层
Sub DesignPrint()
For i = 1 To 2
    Sheets(i).Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="Power PDF"
Next
End Sub


Sub StandardPrint()
    Sheets("Cover").PrintOut
    Sheets("MTO").PrintOut
End Sub


当前代码如上两种,两个sheet版式不同,cover是sheet1为首页单张,MTO是sheet2为正文三张,打印时是分开打印的,导致正文第一页页数为1-3,而不是2-4

TA的精华主题

TA的得分主题

发表于 2022-1-29 10:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 准提部林 于 2022-1-29 10:24 编辑

Sheets(array("Cover","MTO")).PrintOut
ActiveSheet.Select  '打印後, 單選工作表, 取消多選

打印順序, 以工作表放置順序為準, 與array內順序無關~~


TA的精华主题

TA的得分主题

 楼主| 发表于 2022-1-29 10:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
准提部林 发表于 2022-1-29 10:21
Sheets(array("Cover","MTO")).PrintOut
ActiveSheet.Select  '打印後, 單選工作表, 取消多選

十分感谢

Sub DesignPrint()
    Sheets(array("Cover","MTO").PrintOut
    ActiveSheet.Select
End Sub

写成如上,报错如下:

compile error:syntax error

TA的精华主题

TA的得分主题

发表于 2022-1-29 10:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
页面设置-起始页码 设为自动,不论你怎么选,都是顺序编码的

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-1-29 10:43 | 显示全部楼层
Sub DesignPrint()
    Sheets("Cover", "MTO").PrintOut
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="Power PDF"
End Sub
报错如下:
conmile error: wrong number of arguments or invalid property assignment.

TA的精华主题

TA的得分主题

发表于 2022-1-29 10:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 准提部林 于 2022-1-29 10:49 编辑
jave000 发表于 2022-1-29 10:38
十分感谢

Sub DesignPrint()

仔細看...右少一個括號.....
Sheets(array("Cover","MTO")).PrintOut


TA的精华主题

TA的得分主题

 楼主| 发表于 2022-1-29 10:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 jave000 于 2022-1-29 10:56 编辑
jave000 发表于 2022-1-29 10:38
十分感谢

Sub DesignPrint()

很抱歉,十分感谢,是我少加了一个括号,目前运行可以了,我加上了后面的配置代码,目前可行,您的一个单词帮助了我很多,我百度了两天都没查到这个句式。非常非常感谢
请问怎么在打印后用代码解除sheet多选状态?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 22:20 , Processed in 0.042862 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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