我经常在一个工作表中制作大量的散点图(列j与列i)。我想将它们导出为png / jpg文件。每个图都需要一个合理的文件名。我原以为文件名可能是plot_ [column i] _ [column j] .png。
如何从每个图(或ActiveChart)中获取列(如C或AE)?然后我可以创建一个文件名字符串以输入到Export方法。我是VBA宏的完全初学者,但了解一些Visual Basic。
答案 0 :(得分:0)
您可以使用文本函数从源数据字符串中提取该信息。使用.SeriesCollection
:
activesheet.chartobjects("Chart 1").chart.SeriesCollection(1).Formula
会返回这样的内容:
"=SERIES(,Sheet1!$A$1:$A$4,Sheet1!$B$1:$B$4,1)"
包含您需要的两列,“A”和“B”。您可以使用INSTR()
,MID()
和LEFT()
等文字函数提取它们。以下是使用debug.print输出列的示例。我假设您已经知道如何导出它们,因为这不包含在您的问题中。
Sub FindSourceColumns()
Dim sourcedata, firstcolumn, secondcolumn As String, c as chartobject
for each c in activesheet.chartobjects
sourcedata = c.Chart.SeriesCollection(1).Formula
firstcolumn = Mid(sourcedata, InStr(sourcedata, "!$") + 2, 5)
firstcolumn = Left(firstcolumn, InStr(firstcolumn, "$") - 1)
Debug.Print firstcolumn
secondcolumn = Mid(sourcedata, InStr(InStr(sourcedata, "!$") + 2, sourcedata, "!$") + 2, 5)
secondcolumn = Left(secondcolumn, InStr(secondcolumn, "$") - 1)
Debug.Print secondcolumn
next c
End Sub