Изменить ориентацию на xlLandscape без предварительного предварительного просмотра - PullRequest
0 голосов
/ 03 октября 2018

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

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

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

0 голосов
/ 04 октября 2018

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

Application.PrintCommunication = False

With ws.PageSetup
    .Orientation = xlLandscape
End With

Application.PrintCommunication = True

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

...