【问题标题】:Unable to set the PaperSize property of the PageSetup class无法设置 PageSetup 类的 PaperSize 属性
【发布时间】:2013-03-22 14:15:35
【问题描述】:

我正在尝试使用 VB.NET 打印 Excel 电子表格,但出现错误

无法设置 PageSetup 类的 PaperSize 属性

这是我的代码,

Dim oldCI As System.Globalization.CultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture
    System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US")

    With application
        .AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable
        .Visible = False
        .EnableEvents = False
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With

    Dim workbook As Excel.Workbook
    Dim worksheet As Excel.Worksheet
    'Open as readonly and do not update links
    workbook = application.Workbooks.Open(_fileName, 2, True)

    For Each worksheet In workbook.Worksheets
        worksheet.PageSetup.PaperSize = _paperSize
    Next

    workbook.PrintOutEx()
    workbook.Close(False)
    application.Quit()

    System.Threading.Thread.CurrentThread.CurrentCulture = oldCI

    worksheet = Nothing
    application = Nothing

此代码在我的开发机器上运行,一旦我部署到测试服务器,代码就会失败。服务器上已经安装了默认的打印机驱动程序。

【问题讨论】:

  • 它在第一个实例上是否已经失败?还是在特定的工作表上?
  • 您遇到了什么错误?您使用的是正确的枚举,对吗? msdn.microsoft.com/en-us/library/…
  • 第一次失败
  • 是的,使用了正确的枚举。它只是由另一个类计算出来的,用_paperSize表示
  • 请告知我们计算机是否安装了打印机,如果安装了,该打印机是否支持您尝试设置的纸张尺寸。

标签: vb.net excel


【解决方案1】:

您需要安装打印机驱动程序。 Excel 的 PageSetup 类必须与打印机驱动程序交互

我在 Mac Parallels(虚拟机)下运行的 Windows 8 上运行相关代码时遇到了类似问题。对于在 Mac Parallels 上进行 Visual Studio 部署的任何人,这就是我正在做的事情:

  1. 禁用 Mac 和 Windows 之间的打印机共享。转到平行 (VM) > 配置 > 硬件并单击打印。取消选中“添加所有 Mac 打印机”和“同步默认打印机”
  2. 在 Windows 上安装打印机驱动程序
  3. 为了获得同一个无线路由器分配的IP地址 (如果需要无线连接打印机),需要设置 网络作为桥接。转到平行 (VM) > 配置 > 硬件 > '网络 1' 并选择网络类型作为机场和 DHCP 服务器作为自动

【讨论】:

    【解决方案2】:

    问题的核心在于 _paperSize 常量。在我的情况下,它给出了同样的错误:(forgive c#)

    worksheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperLedger; 
    

    取决于打印机,例如“ledger”尺寸的纸张可能定义为 11x17 或 Tabloid。找出打印驱动程序所指的页面大小,然后

    没用:

    excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperLedger 
    
    excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaper11x17
    

    有效:

    excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperTabloid
    

    我希望这可以帮助任何因 Microsoft Excel 枚举的有趣不一致而遇到令人沮丧的问题的人。

    【讨论】:

      【解决方案3】:

      微软确认 XSham 的回答:

      https://support.microsoft.com/de-de/help/291298/you-cannot-use-page-setup-properties-in-excel-if-no-printers-were-inst

      症状

      当您运行 Microsoft Visual Basic for Applications 宏来尝试设置或获取任何页面设置属性时 Microsoft Excel 工作簿中的工作表,您可能会收到 以下错误消息:

      运行时错误“1004”:无法设置 PageSetup 的 x 属性 类运行时错误“1004”:无法获取 x 属性 PageSetup 类

      原因

      当您的计算机上没有安装打印机驱动程序时会出现此问题。如果未安装打印机驱动程序,Excel 将无法设置或获取页面设置属性。

      分辨率

      为防止出现此问题,请在您的计算机上安装打印机驱动程序。使用控制面板中的打印机选项添加和删除打印机驱动程序。

      【讨论】:

        【解决方案4】:

        您可以使用办公自动化来更改页面大小,如下所示

        worksheet.PageSetup.PaperSize = WdPaperSize.wdPaperLetter
        

        或从“WdPaperSize”下拉列表中选择任何其他纸张类型。

        希望对你有所帮助。

        【讨论】:

        • 如果您查看上面的代码,这是针对每个工作表完成的
        猜你喜欢
        • 1970-01-01
        • 2021-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多