当我的程序安装到另一台计算机时出现问题,其打印机首选项不同,我的数据报告接受字母大小为8.2 * 11,因为当打印机首选项不同时,数据报告不会显示和给出一个错误,说页面宽度大于纸张宽度,是否有人知道如何解决这个问题。
我试过这段代码,但它没有用
Printer.PaperSize = vbPRPSLetter
答案 0 :(得分:1)
查看Microsoft知识库文章FIX: Error Message "Report Width Is Larger Than the Paper Width" When Showing Data Report in Landscape
使用Show方法的数据 报告预览报告,页面 orientation默认为默认值 本地的打印机设置 电脑。因此,如果 默认打印机的方向 设置设置为纵向 标准信纸和您的报告 宽度超过8.5英寸宽, 发生以下错误:报告 宽度大于纸张宽度。
在使用数据报告之前,解决方案似乎是设置Orientation
。将DataReport1
更改为数据报告的名称。
DataReport1.Orientation = rptOrientLandscape
DataReport1.Show
编辑另一个建议:Microsoft offer一个免费的DLL,允许您更改打印机的默认设置。您可以尝试在项目中使用该免费DLL,然后在使用数据报告之前执行以下代码。微软称“这个DLL在处理数据报告时非常有用,它在显示或打印报告之前读取默认的打印机方向”。
Set obj = New PrinterControl
obj.ChngOrientationLandscape
答案 1 :(得分:1)
- 您只需切换到自定义纸张尺寸吗?
Printer.PaperSize = 256
Printer.Width = 11808 '(8.2 * 1440)
Printer.Height = 15840 '(11 * 1440)
- 确定错误无关 达到最大印刷宽度 报告本身?许多打印机具有最大打印宽度 它会强制增加1/4“的边距 一面纸。在您的情况下,强制您的可打印区域最大7.7“。最快的方式 检查将暂时设置 打印宽到较低的值和 看看它是否有效。
- 另一种可能是打印机的权限。如果它是共享网络资源,它可能会被锁定并拒绝更改纸张设置并丢失不准确的错误信息。
答案 2 :(得分:0)
要在运行时更改打印机方向,我们需要安装VB6 Service Pack 6
使用此代码
DataReport1.Orientation = rptOrientLandscape
DataReport1.Show
这样可以正常使用