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