別のマクロを使用してワークブックで作成したすべてのグラフを自動的に印刷するマクロを作成しようとしています。 (文字通り数百)私が抱えている問題は、VBAを使用してグラフをポートレートレイアウトからランドスケープレイアウトに変更する方法を理解できないことです。誰かが私を助けることができるかどうか疑問に思っていた。私はコードを試してみましたが、 ".ChartObjects(x).PageSetup.Orientation = xlLandscape"という行にエラーが表示されます。これは正しいプロパティではないが、それ以外はそうです。VBAを使用してExcelチャートの向き(縦または横)を変更する
助けていただけたら幸いです! ChartObject
オブジェクトがあると、その後Chart
オブジェクトがあるので、VBAを使用してExcelのグラフを操作
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
グラフは実際に私の専門分野ではありません。しかし、私が理解しているように、彼らは「方向づけ」されていません。高さは幅よりも小さいかもしれませんが、それは同じではありません。 'Sheets(" xxxxxx ")。PageSetup.Orientation = xlLandscape'の効果は? –
その他のポイント。 (1) 'With Application'を終了するには、' .ActivePrinter = ... 'の下に' End With'を置くべきです。最後の '.ScreenUpdating = True'の前に別の' With Application'を追加してください。 (2) 'lChartObjCount'を、マクロが開始されたときにアクティブなページ上のチャートの数に設定します。次に、ブック内のすべてのシートに対して 'lChartObjCount'を使います。 With wks'' for x = 1 To .ChartObjects.Count'が必要です。 –