【问题标题】:Change Orientation to xlLandscape without first print preview在没有第一次打印预览的情况下将方向更改为 xlLandscape
【发布时间】:2018-10-03 20:47:51
【问题描述】:

我的代码包括更改一些 .PageSetup 变量。

我在使用此代码时遇到问题

Sub Test()

    Dim ws as Worksheet
    
    Set ws = ActiveSheet
    
    With ws.PageSetup
        .Orientation = xlLandscape
    End With

End Sub

这会出错,但如果我在运行 .Orientation 之前暂停代码并转到打印预览,然后尝试运行它,一切正常。

.PageSetup 功能似乎需要加载打印机设置才能执行。我不知道如何用 VBA 做到这一点。

我从 Access DB VBA 运行它。它导出一个表,然后我创建一个新的 Excel 应用程序以使用它打开它

Dim xlApp as Excel.Application
set xlApp = New Excel.Application

从历史上看,只要我加载了 Excel 参考库,我在此处编写的任何 VBA 在 Access 中的工作方式与在 Excel 中的工作方式相同。

但只是为了比较,我在运行 VBA 的 Excel 文件中也遇到过这个问题,只是不一致,所以我从来没有弄清楚问题可能是什么。但任何时候我遇到问题,解决方法总是先选择打印预览。

这是我在特定宏上得到的错误代码:

错误号:1004

错误描述:无法设置PageSetup类的Orientation属性

宏在导出到 Excel 之前会执行大量查询和表更新。此外,错误消息似乎与 1004 数字相当通用。

【问题讨论】:

  • 我无法复制问题,我将代码复制并放入空白工作簿中,并且没有错误。如果您指的是需要安装打印机,那么是的,这可能是个问题。
  • 更新问题,提供更多信息

标签: excel vba worksheet printers page-setup


【解决方案1】:

尝试在进行页面设置之前关闭Application.PrintCommunication,然后再将其重新打开。像这样:

Application.PrintCommunication = False

With ws.PageSetup
    .Orientation = xlLandscape
End With

Application.PrintCommunication = True

不过,这可能只是将错误转移到您重新打开打印通信的那一行

【讨论】:

  • 同样的问题,抱歉。不过谢谢你的建议
【解决方案2】:

您可以尝试将 xlLandscape 替换为值 2。 看看xlPageOrientation enumeration (Excel)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 2015-04-05
    相关资源
    最近更新 更多