Я пытаюсь написать макрос, чтобы автоматически печатать все диаграммы, которые я создал в книге, используя другой макрос. (буквально сотни) Проблема, с которой я сталкиваюсь, заключается в том, что я не могу понять, как изменить график с макета портрета на макет ландшафта с помощью VBA. Мне было интересно, сможет ли кто-нибудь помочь мне. Я пробовал код ниже, но он дает мне ошибку в строке «.ChartObjects (x) .PageSetup.Orientation = xlLandscape« Я понимаю, что для объекта диаграммы это неправильное свойство, но я не могу понять, что иначе это так.Изменение ориентации (портретной или альбомной) диаграммы Excel с использованием VBA
Любая помощь будет оценена!
Option Explicit
Sub Print_All_Charts()
Dim szASheet As String
szASheet = ActiveSheet.Name
Dim lChartObjCount As Long
lChartObjCount = ActiveSheet.ChartObjects.Count
With Application
.ScreenUpdating = False
.ActivePrinter = "HP Color LaserJet 5550 PS on Ne08:"
'On Error Resume Next
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
Dim x As Long
For x = 1 To lChartObjCount
With wks
.ChartObjects(x).PageSetup.Orientation = xlLandscape
.ChartObjects(x).Select
.ChartObjects(x).Activate
.PrintOut , , 1
End With
Next x
Next wks
ActiveChart.Deselect
With Sheets(szASheet)
.Select
.Range("A1").Select
End With
.ScreenUpdating = True
End With
End Sub
Графики на самом деле не моя область знаний. Однако, как я их понимаю, они не «ориентированы». Высота может быть меньше ширины, но это не то же самое. Какое влияние имеет «Листы» («xxxxxx»). PageSetup.Orientation = xlLandscape' есть? –
Другие пункты. (1) У вас должно быть «End With» под '.ActivePrinter = ...' для завершения 'With Application'. Добавьте еще один «С помощью приложения» перед окончательным '.ScreenUpdating = True'. (2) Вы устанавливаете 'lChartObjCount' количество графиков на странице, которая активна при запуске макроса. Затем вы используете 'lChartObjCount' для каждого листа в книге. Вам нужно иметь «С wks'' для x = 1 до .ChartObjects.Count'. –