无法设置PageSetup类的PaperSize属性

时间:2013-03-22 14:15:36

标签: vb.net excel

我尝试使用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 个答案:

答案 0 :(得分:4)

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

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

  1. 禁用Mac和Windows之间的打印机共享。转到Parallels (VM)>配置>硬件,然后单击打印。取消选中“添加所有Mac” 打印机'和'同步默认打印机'
  2. 在Windows上安装打印机驱动程序
  3. 为了获得同一无线路由器分配的IP地址 (如果需要以无线方式连接打印机),则需要进行设置 网络化的桥梁。转到Parallels (VM)>配置>硬件> 'Network 1'并选择Networking type as Airport和DHCP server as Auto

答案 1 :(得分:0)

您可以使用办公室自动化来更改像这样的页面大小

worksheet.PageSetup.PaperSize = WdPaperSize.wdPaperLetter

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

希望它会对你有所帮助。

答案 2 :(得分:0)

核心问题在于 _paperSize 常量。就我而言,它给出了同样的错误:(原谅c#)

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

取决于打印机,例如“分类帐”尺寸纸张可以定义为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 :(得分:0)

确认Microsoft对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类

     

原因

     

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

     

解决方案

     

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