Изменить ориентацию на 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, не будут работать.