ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何使用VBA计算活动工作簿的打印页面总数?

如何使用VBA计算活动工作簿的打印页面总数?

作者:绿色风 分类: 时间:2022-08-17 浏览:76
楼主
rongjun
Q:如何使用VBA计算活动工作簿的打印页面总数?
A: 使用如下代码(两种算法):
1、按分页符计算(包含空白页)
  1. Sub 显示总页数1()
  2.     Dim PageCount As Integer
  3.     Dim Sh As Worksheet
  4.     PageCount = 0
  5.     For Each Sh In Worksheets
  6.         PageCount = PageCount + (Sh.HPageBreaks.Count + 1) * (Sh.VPageBreaks.Count + 1)
  7.     Next Sh
  8.     MsgBox "总页数=" & PageCount
  9. End Sub

2、按实际打印页数计算
  1. Sub 显示总页数2()
  2.     Dim PageCount As Integer
  3.     Dim Sh As Worksheet
  4.     PageCount = 0
  5.     For Each Sh In Worksheets
  6.         Sh.Activate
  7.         Sh.DisplayPageBreaks = True
  8.         PageCount = PageCount + Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
  9.     Next Sh
  10.     Sheets(1).Activate
  11.     MsgBox "总页数=" & PageCount
  12. End Sub


如何使用VBA计算活动工作簿的打印页面总数?.rar
2楼
gvntw
也可以使用ExecuteExcel4Macro("Get.Document(50)")来计算活动工作表的总页数。
3楼
biaotiger1
Q:如何在当前活动单元格显示当前工作表中的总页数?
A:ALT+F11→“插入”模块→在新建模块中输入代码如下
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. Target = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
  3. End Sub
4楼
yd0209


输入了模块及代码,为何没有见到效果?
5楼
biaotiger1
首先确保你要选择的单元格是空白单元格(假设是A列),复制代码到该工作表所在模块内,然后你选中A1单元格,
用键盘下移单元格。会发生什么?
用鼠标随意单击空白单元格,会发生什么?

应该显示当前工作表的页数
6楼
yd0209
能否只设定一个单元格来显示当前表总页数?目前是只要是点中了空单元格就会出现页数,这样点到哪里哪里留数。
7楼
biaotiger1
在当前工作表所在模块中输入如下代码
  1. Private Sub WorkSheet_SelectionChange(ByVal Target As Range)
  2. If Len(Target) = 0 Then Target = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
  3. End Sub
只要单击空白单元格,则在其中插入当前工作表可打印页数
8楼
yd0209
只指定一个单元格来计算页数行不行?
页数计算问题.rar
9楼
biaotiger1
  1. Private Sub WorkSheet_SelectionChange(ByVal Target As Range)
  2. If Target.Address = "$K$6" Then
  3.     If Len(Target) = 0 Then Target = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
  4. End If
  5. End Sub
10楼
高玉甫

您的附件版本较高,我使用的2003,无法打开,如何是好?
11楼
高玉甫

师傅,把您的代码放进工作表的代码区,K6 单元格反映异常,如附图 aaa 所示,再点击那个 K6 单元格,出现如附图 bbb 的图面,为何?请赐教。aaa.png
 
bbb.png
 
12楼
高玉甫

您的代码出现异常如附图:aaa.png
 
bbb.png
 
13楼
biaotiger1
改成这样试下,我不知道你的K6单元格中的错误值是什么东东
  1. Private Sub WorkSheet_SelectionChange(ByVal Target As Range)
  2. If Target.Address = "$K$6" Then
  3.     Target = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
  4. End If
  5. End Sub
14楼
高玉甫


师傅,您的附件很好,我在这里给您“评分”了,另外,请您关注一下如下网址的帖子,谢谢您。
15楼
syz105729913
实际打印页数还可以这样,跟打印预览里的页数一样
Sub ah()
MsgBox "总页数=" & ActiveSheet.PageSetup.Pages.Count
End Sub
16楼
wubaiwan
收藏,学习了
17楼
avel
Sub test()
    MsgBox Sheet1.PageSetup.Pages.Count
End Sub

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap