Изменить ориентацию на xlLandscape без предварительного предварительного просмотра

У меня есть некоторый код для моего макроса, который выполняет различные действия, включая изменение некоторых переменных.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.

Но для сравнения, у меня также была такая же проблема, когда внутри файла Excel, работающего с VBA, она просто не согласована, поэтому я так и не понял, в чем проблема. Но всякий раз, когда у меня возникает проблема, решение всегда сначала выбирает "Предварительный просмотр", а затем работает нормально.

Это код ошибки, который я получаю в моем конкретном макросе:

Номер ошибки: 1004

Описание ошибки: невозможно установить свойство Orientation класса PageSetup

Извините, что ответ занял так много времени, я хотел получить точный код ошибки и описание, а у меня есть макрос, выполняющий тон запросов и обновлений таблиц, прежде чем он попадет в экспорт в Excel. Кроме того, сообщение об ошибке кажется довольно общим с номером 1004.

3 ответа

Вы можете попробовать заменить xlLandscape значением 2. Взгляните на перечисление xlPageOrientation (Excel)

Попробуйте отключить приложение Application.PrintCommunication перед началом работы с настройкой страницы, а затем снова включите его. Как это:

Application.PrintCommunication = False

With ws.PageSetup
    .Orientation = xlLandscape
End With

Application.PrintCommunication = True

Это может просто переместить ошибку в строку, где вы снова включаете связь для печати, хотя

Если я правильно помню, рабочий лист (область печати) должен быть виден, иначе вы получите эту ошибку. Открыв книгу, экспортированную из Access, убедитесь, что:workbooks(x).windows(1).visible = Trueиworkbooks(x).sheets("xxx").Visible = xlSheetVisible

Я бы избегал использования «Активного...».

Также команда:Application.PrintCommunication = Falseне имеет никакого отношения к вашей ошибке, но без нее изменения, которые вы намеревались внести в PageSetup, не будут работать.

Другие вопросы по тегам