0

我的代码包括更改一些 .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 号码相当通用。

4

2 回答 2

0

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

于 2018-11-26T06:26:11.740 回答
0

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

Application.PrintCommunication = False

With ws.PageSetup
    .Orientation = xlLandscape
End With

Application.PrintCommunication = True

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

于 2018-10-04T00:11:32.017 回答