我尝试使用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
此代码适用于我的开发计算机,只要我部署到测试服务器,代码就会失败。服务器上已安装默认打印机驱动程序。
答案 0 :(得分:4)
您需要安装打印机驱动程序。 PageSetup类的Excel必须与打印机驱动程序进行交互
我在Mac Parallels(虚拟机)下运行的Windows 8上运行相关代码时出现类似问题。对于在Mac Parallels上进行Visual Studio部署的任何人来说,这就是我正在做的事情:
答案 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的回答:
症状
当您运行Microsoft Visual Basic for Applications宏时,尝试为任何宏设置或获取页面设置属性 Microsoft Excel工作簿中的工作表,您可能会收到 以下错误消息:
运行时错误'1004':无法设置PageSetup的x属性 类运行时错误'1004':无法获取 PageSetup类
原因
当您的计算机上没有安装打印机驱动程序时,会发生此问题。如果未安装打印机驱动程序,则Excel无法设置或获取页面设置属性。
解决方案
为防止发生此问题,请在计算机上安装打印机驱动程序。使用“控制面板”中的“打印机”选项添加和删除打印机驱动程序。