编写此脚本的更有效方法

时间:2013-07-31 17:23:02

标签: excel vba

我正在使用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”并让它影响我的所有代码。

1 个答案:

答案 0 :(得分:1)

这只是经过了一些测试,但它应该向您展示如何使用chartobjects遍历工作表,以及如何识别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