【问题标题】:Using Excel VBA, how do you automate the production of a list of chart titles from within the workbook?使用 Excel VBA,您如何从工作簿中自动生成图表标题列表?
【发布时间】:2019-08-30 17:37:16
【问题描述】:

我有一个 Excel 工作簿,其中包含不同工作表上的图表和一些数据表。我希望在一张纸中创建所有图表标题的摘要。

我尝试了一些 VBA 编码,但可惜我不能完全调整代码来选择和复制图表标题而不是工作表名称。

Set objNewWorkbook = Excel.Application.Workbooks.Add
Set objNewWorksheet = objNewWorkbook.Sheets(1)

For i = 1 To ThisWorkbook.Sheets.Count
    objNewWorksheet.Cells(i, 1) = i
    objNewWorksheet.Cells(i, 2) = ThisWorkbook.Sheets(i).Name
Next i

我希望有一份不错的图表标题列表。额外的好处是还有工作表名称。

【问题讨论】:

  • 我现在远离 Excel/IDE,但很确定它只是:ThisWorkbook.Sheets(i).ChartObjects(1).Chart.ChartTitle。如果每个工作表有多个图表(或者如果工作表上有 0 个图表,或者图表没有标题等),则需要进行一些修改以处理这些情况。跨度>

标签: excel vba graph charts automation


【解决方案1】:

您可以更改i 以从您想要的任何行开始并格式化/添加标题。您正在使用一组工作表和一组图表对象。你可以简单地循环。

Sub ChartList()
    Dim objNewWorkbook As Workbook
    Dim objNewWorksheet As Worksheet
    Dim wks As Worksheet
    Dim cht As ChartObject
    Dim i As Long

    Set objNewWorkbook = Excel.Application.Workbooks.Add
    Set objNewWorksheet = objNewWorkbook.Sheets(1)

    i = 1

    For Each wks In ThisWorkbook.Worksheets
        objNewWorksheet.Cells(i, 1) = wks.Index
        objNewWorksheet.Cells(i, 2) = wks.Name
        If wks.ChartObjects.Count > 0 Then
            For Each cht In wks.ChartObjects
                objNewWorksheet.Cells(i, 3) = cht.Chart.ChartTitle.Text
                i = i + 1
            Next cht
        End If
        i = i + 1
    Next wks

End Sub

【讨论】:

  • 这是一个不错的代码,但是cht.Name 属性输出的是图表名称,而不是标题。
  • @DannyPapadopulos 好的,已编辑以更改为图表标题。
猜你喜欢
  • 1970-01-01
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 2018-01-25
相关资源
最近更新 更多