0

vbaを使用して多くのExcelチャートを印刷しています。この時点で、約 35 枚のシートから印刷しているので、現在使用しているスクリプトよりも簡単に変更できるスクリプトがあるかどうか疑問に思っています。

Sheets("Euro Graph").Select
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PlotArea.Select
ActiveChart.PageSetup.RightHeader = "nominal LCU"
ActiveChart.PageSetup.RightFooter = "&D  &T"
ActiveChart.PageSetup.CenterFooter = "&A"
ActiveChart.PageSetup.LeftFooter = "&Z&F"
Selection.Width = 921
Selection.Left = 23
Selection.Top = 61
Selection.Height = 550
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

したがって、これはうまく機能します。印刷したいチャートごとに、まずシートを選択し、チャート番号を参照して印刷したいチャートをアクティブにします。各グラフに使用するすべてのコード ブロックを手動で変更することなく、グラフ印刷仕様 (ヘッダー/フッターの変更など) を変更する効率的な方法はありますか?

編集:多くの行を削除して、ただ持つことができました

Sheets("Euro Graph").Select
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PageSetup.RightHeader = "nominal LCU"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

しかし、「公称 LCU」を変更して、すべてのコードに影響を与えたいと思っています。

4

1 に答える 1

1

これはある程度テストされているにすぎませんが、チャート オブジェクトを使用してワークシートをループする方法と、LCU チャート オブジェクトを識別する方法を示しているはずです。

Sub SetLCUCharts()
Dim ws As Excel.Worksheet
Dim chtObject As Excel.ChartObject
Dim cht As Excel.Chart

For Each ws In ThisWorkbook.Worksheets
    If ws.ChartObjects.Count > 0 Then
        For Each chtObject In ws.ChartObjects
            If InStr(chtObject.Name, "LCU") > 0 Then
                Set cht = ws.ChartObjects(1).Chart
                With cht
                    .PageSetup.RightHeader = "nominal LCU"
                    .PrintOut Copies:=1, Collate:=True
                End With
            End If
        Next chtObject
    End If
Next ws
End Sub
于 2013-07-31T19:46:04.240 に答える