6

我正在尝试使用 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

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

4

4 回答 4

7

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

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

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

核心问题在于_paperSize常量。在我的情况下,它给出了同样的错误:(原谅 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 枚举的有趣不一致而遇到令人沮丧的问题的人。

于 2016-08-23T23:01:44.187 回答
1

微软确认 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”:无法获取 PageSetup 类的 x 属性

原因

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

解析度

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

于 2019-08-22T16:37:05.980 回答
0

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

worksheet.PageSetup.PaperSize = WdPaperSize.wdPaperLetter

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

希望对您有所帮助。

于 2013-03-22T16:15:55.357 回答