You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel 2019 for Mac下VBA自定义纸张打印异常问题求助

Excel 2019 for Mac VBA打印自定义纸张尺寸异常问题解决

环境与问题背景

  • 运行环境:Excel 2019 for Mac
  • 打印机:Polono PL60,自定义纸张尺寸100x150mm,已设为系统默认打印机,纸张尺寸同步设为默认
  • 需求:通过VBA自动打印Sheet2,需采用100x150mm横向打印
  • 核心问题:手动选择该纸张尺寸打印输出正常,但VBA运行时打印效果与手动预览不一致;无法在VBA中直接指定100x150mm尺寸,最接近的xlJapanesePostcard仅纵向打印正常,横向则异常;宏运行时会自动切换到默认打印设置导致输出错误,但宏执行后查看打印预览设置无变化,手动仍可正常打印

现有VBA代码

Sub PrintSheet2WithCustomPageSetup()
    Dim ws As Worksheet

    On Error Resume Next

    ' 指定目标工作表为Sheet2
    Set ws = ThisWorkbook.Sheets("Sheet2")
    If ws Is Nothing Then
        MsgBox "Sheet2 not found!", vbExclamation
        Exit Sub
    End If

    ' 激活工作簿与工作表
    ThisWorkbook.Activate
    ws.Activate

    ' 应用自定义页面设置
    With ws.PageSetup
        ' 纸张尺寸:使用打印机定义的100x150mm规格(未直接指定)
        .Orientation = xlLandscape
        .Zoom = False ' 启用"调整为合适大小"
        .FitToPagesWide = 1 ' 调整为1页宽
        .FitToPagesTall = 1 ' 调整为1页高

        ' 设置边距(单位:厘米转磅)
        .TopMargin = Application.CentimetersToPoints(0.1)
        .BottomMargin = Application.CentimetersToPoints(0.1)
        .LeftMargin = Application.CentimetersToPoints(0.1)
        .RightMargin = Application.CentimetersToPoints(0.3)
        .HeaderMargin = Application.CentimetersToPoints(0.1)
        .FooterMargin = Application.CentimetersToPoints(0.1)

        ' 内容对齐设置
        .CenterHorizontally = True
        .CenterVertically = False
    End With

    ' 使用默认打印机打印
    ws.PrintOut Copies:=1

    On Error GoTo 0
End Sub

已尝试的无效操作

  • 调整边距、内容对齐方式,无改善
  • 尝试设置.PaperSize = xlJapanesePostcard并改为纵向打印正常,但横向打印输出异常
  • 切换打印预设、上次使用设置、默认设置,结果一致;手动使用上次设置打印正常,但宏运行时自动切换到默认设置
  • 参考过同类问题方案,但Excel 2019 for Mac页面设置无Options按钮,方案不适用

解决方案建议

方法1:直接指定用户自定义纸张尺寸

在Mac Excel中,可通过xlPaperUser指定自定义纸张尺寸,同时手动设置纸张的宽度和高度(单位为磅,1厘米=28.3465磅)。由于是横向打印,需将纸张宽度设为150mm(15厘米),高度设为100mm(10厘米),修改后的PageSetup代码如下:

With ws.PageSetup
    .PaperSize = xlPaperUser
    .PaperWidth = Application.CentimetersToPoints(15) ' 对应150mm宽度
    .PaperHeight = Application.CentimetersToPoints(10) ' 对应100mm高度
    .Orientation = xlLandscape
    .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = 1
    ' 保留原边距与对齐设置...
End With

方法2:结合AppleScript调用系统打印预设

若方法1无效,可提前在系统打印对话框中保存Polono PL60的100x150mm横向打印预设,再通过VBA调用AppleScript触发该预设打印:

Sub PrintWithAppleScript()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet2")
    If ws Is Nothing Then
        MsgBox "Sheet2 not found!", vbExclamation
        Exit Sub
    End If
    
    ws.Activate ' 激活工作表确保打印范围正确
    
    ' 构建AppleScript脚本,替换"你的打印预设名称"为实际保存的预设名
    Dim scriptText As String
    scriptText = "tell application ""Microsoft Excel""" & vbCrLf & _
                 "    activate" & vbCrLf & _
                 "    print active sheet with properties {print preset:""你的打印预设名称""}" & vbCrLf & _
                 "end tell"
    MacScript scriptText ' 执行AppleScript
End Sub

方法3:添加延迟确保设置生效

Mac Excel的PageSetup设置可能存在生效延迟,可在设置完成后添加短暂延迟,确保参数应用后再执行打印:

' 在PageSetup设置完成后添加2秒延迟
Application.Wait Now + TimeValue("00:00:02")
ws.PrintOut Copies:=1

内容的提问来源于stack exchange,提问作者dizaj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 18:24:50