|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 此乃小白一枚 于 2021-1-15 09:08 编辑
代码作用:打印设置,页面A4;水平居中;1页宽,高自动;页面方向纵向,若缩放比例小于70%,页面方向设为横向;
但是经过测试,代码第37行这个 if .zoom < 70 是恒成立的,请vba大佬帮忙改写
- Sub 打印多个工作表()
- Application.ScreenUpdating = False '关闭屏幕更新
-
- If Not Application.Dialogs(xlDialogPrinterSetup).Show Then
- Exit Sub
- End If
-
- Dim 是否修改格式 As Integer
- 是否修改格式 = MsgBox("是否自动调整打印格式", vbYesNo)
-
- Dim 当前工作表 As Worksheet
- For Each 当前工作表 In Worksheets
- If 当前工作表.Visible = xlSheetVisible Then '只打印没有隐藏的工作表
- If 是否修改格式 = vbYes Then
- 修改打印格式 当前工作表
- End If
- '当前工作表.PrintOut '先屏蔽本行代码
- End If
- Next
-
- Application.ScreenUpdating = True '恢复屏幕更新
- End Sub
- Sub 修改打印格式(工作表 As Worksheet)
- 工作表.Range("1:1048576").Interior.ColorIndex = xlNone '设置单元格无填充
- With 工作表.PageSetup
- .PaperSize = xlPaperA4 '页面纸张大小(Z):A4
- .CenterHorizontally = True '页边距居中方式:水平(Z)
- .Zoom = False '页面缩放比例:未选择
- .FitToPagesWide = 1 '调整为1页宽
- .FitToPagesTall = False '调整为自动高
- .Orientation = xlPortrait '页面方向:纵向(T) xlPortrait/ 横向(L) xlLandscape, 默认纵向
- If .Zoom < 70 Then
- .Orientation = xlLandscape '页面方向:纵向(T) xlPortrait/ 横向(L) xlLandscape
- End If
- End With
- End Sub
复制代码
这个问题已经困扰我两天了,也可能是我思路有问题,还望大佬指导已经解决了,感谢大家帮忙,附上最终代码(已打印大量表格,经检查未发现问题)
文件工作簿1是有问题的,文件工作簿2是最终的(应该是正确的)
- Sub 打印多个工作表()
- Application.ScreenUpdating = False '关闭屏幕更新
-
- If Not Application.Dialogs(xlDialogPrinterSetup).Show Then
- Exit Sub
- End If
-
- Dim 是否修改格式 As Integer
- 是否修改格式 = MsgBox("是否自动调整打印格式", vbYesNo)
-
- Dim 当前工作表 As Worksheet
- For Each 当前工作表 In Worksheets
- If 当前工作表.Visible = xlSheetVisible Then '只打印没有隐藏的工作表
- If 是否修改格式 = vbYes Then
- 修改打印格式 当前工作表
- End If
- '当前工作表.PrintOut '暂时屏蔽本行代码
- End If
- Next
-
- Application.ScreenUpdating = True '恢复屏幕更新
- End Sub
- Sub 修改打印格式(工作表 As Worksheet)
- 工作表.Range("1:1048576").Interior.ColorIndex = xlNone '设置单元格无填充
- With 工作表.PageSetup
- .PaperSize = xlPaperA4 '页面纸张大小(Z):A4
- .CenterHorizontally = True '页边距居中方式:水平(Z)
- .Orientation = xlPortrait '页面方向:纵向(T) xlPortrait/ 横向(L) xlLandscape, 默认纵向
- .Zoom = 70 '页面缩放比例:70%
- If 工作表.VPageBreaks.Count Then
- .Orientation = xlLandscape '页面方向:纵向(T) xlPortrait/ 横向(L) xlLandscape
- End If
- .Zoom = False
- .FitToPagesWide = 1 '调整为1页宽
- .FitToPagesTall = False '调整为自动高
- End With
- End Sub
复制代码 但是.VPageBreaks.count可能不能正确获得垂直分页符的数量,望大佬帮忙看下
|
|