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 回答