Vb.net 无法设置PageSetup类的PaperSize属性

Vb.net 无法设置PageSetup类的PaperSize属性,vb.net,excel,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.

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

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

您可以使用office automation更改页面大小,如下所示

worksheet.PageSetup.PaperSize = WdPaperSize.wdPaperLetter
或者从“WdPaperSize”下拉列表中选择任何其他纸张类型


希望它能对您有所帮助。

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

我在运行在Mac Parallels(虚拟机)下运行的Windows 8上的相关代码时遇到类似问题。对于在Mac Parallels上进行Visual Studio部署的任何人,我将做以下几点:

  • 禁用Mac和Windows之间的打印机共享。相提并论 (VM)>配置>硬件,然后单击打印。取消选中“添加所有Mac” “打印机”和“同步默认打印机”
  • 在Windows上安装打印机驱动程序
  • 以便通过同一无线路由器获得指定的IP地址 (如果需要无线连接到打印机),则需要设置 作为桥梁的网络。相提并论 (VM)>配置>硬件>“网络1”,并选择网络类型作为Airport,选择DHCP服务器作为Auto

  • 核心问题在于\u纸张大小常数。在我的例子中,它在以下方面给出了相同的错误:(原谅c#)

    根据打印机的不同,例如,“分类账”大小的纸张可以定义为11x17或小报。找出打印驱动程序所指的页面大小,然后

    不起作用:

    excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperLedger 
    
    excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaper11x17
    
    已工作:

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

    我希望这能帮助任何有令人沮丧的问题的人解决Microsoft Excel枚举中有趣的不一致问题。

    微软对XSham回答的确认:

    症状 运行Microsoft Visual Basic for Applications宏时,该宏尝试设置或获取任何应用程序的页面设置属性 在Microsoft Excel工作簿中,您可能会收到 以下错误消息:

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

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

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


    它一开始就失败了吗?或者在特定的工作表上?您遇到了哪些错误?您正在使用正确的枚举,对吗?第一个实例失败是的,使用了正确的枚举。它只是由另一个类计算出来的,由_papersize表示。请告诉我们计算机是否安装了打印机,如果安装了打印机,该打印机支持您试图设置的纸张大小。如果您查看了上面的代码,这是为每个工作表完成的
    excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperTabloid