我在一張Excel表格中有幾個圖表, 在另一個Excel表格中,我創建了一個表格來列出上表中列出的所有圖表,我可以找到圖表名稱和在哪張紙上,還有圖表類型。獲取圖表區域重疊的單元格區域
但我想知道這個圖表的單元格範圍是什麼,即在圖表對象所在的單元格之上。我如何得到這個?
這裏是我的代碼
Enum myEnum
xl3DArea = -4098
xl3DAreaStacked = 78
xl3DAreaStacked100 = 79
xl3DBarClustered = 60
xl3DBarStacked = 61
xl3DBarStacked100 = 62
xl3DColumn = -4100
xl3DColumnClustered = 54
xl3DColumnStacked = 55
xl3DColumnStacked100 = 56
xl3DLine = -4101
xl3DPie = -4102
xl3DPieExploded = 70
xlArea = 1
xlAreaStacked = 76
xlAreaStacked100 = 77
xlBarClustered = 57
xlBarOfPie = 71
xlBarStacked = 58
xlBarStacked100 = 59
xlBubble = 15
xlBubble3DEffect = 87
xlColumnClustered = 51
xlColumnStacked = 52
xlColumnStacked100 = 53
xlConeBarClustered = 102
xlConeBarStacked = 103
xlConeBarStacked100 = 104
xlConeCol = 105
xlConeColClustered = 99
xlConeColStacked = 100
xlConeColStacked100 = 101
xlCylinderBarClustered = 95
xlCylinderBarStacked = 96
xlCylinderBarStacked100 = 97
xlCylinderCol = 98
xlCylinderColClustered = 92
xlCylinderColStacked = 93
xlCylinderColStacked100 = 94
xlDoughnut = -4120
xlDoughnutExploded = 80
xlLine = 4
xlLineMarkers = 65
xlLineMarkersStacked = 66
xlLineMarkersStacked100 = 67
xlLineStacked = 63
xlLineStacked100 = 64
xlPie = 5
xlPieExploded = 69
xlPieOfPie = 68
xlPyramidBarClustered = 109
xlPyramidBarStacked = 110
xlPyramidBarStacked100 = 111
xlPyramidCol = 112
xlPyramidColClustered = 106
xlPyramidColStacked = 107
xlPyramidColStacked100 = 108
xlRadar = -4151
xlRadarFilled = 82
xlRadarMarkers = 81
xlStockHLC = 88
xlStockOHLC = 89
xlStockVHLC = 90
xlStockVOHLC = 91
xlSurface = 83
xlSurfaceTopView = 85
xlSurfaceTopViewWireframe = 86
xlSurfaceWireframe = 84
xlXYScatter = -4169
xlXYScatterLines = 74
xlXYScatterLinesNoMarkers = 75
xlXYScatterSmooth = 72
xlXYScatterSmoothNoMarkers = 73
End Enum
Sub ListChartInfo()
'Update 20141112
Dim appExcel As Application
Dim objWorkbook As Workbook
Dim path As String
path = ActiveWorkbook.path
Dim St As Worksheet
Dim NewSt As Worksheet
Dim Cb As ChartObject
Dim I, K As Long
'create new excel application object
Set appExcel = New Application
'set the applications visible property to false
appExcel.Visible = False
'open the workbook with data
'Set objWorkbook = appExcel.Workbooks.Open(path & "\Defect Management Dashboard - 20151201 - 002.xlsx")
'Set objWorkbook = ActiveWorkbook.Sheets("Name of Report").Cells(B, 2)
Application.ScreenUpdating = False
Set NewSt = ActiveWorkbook.Sheets("ChartInfo")
I = 1
NewSt.Cells(I, 1) = "Chart Name"
NewSt.Cells(I, 2) = "Sheet Name"
NewSt.Cells(I, 3) = "Chart Type"
NewSt.Cells(I, 4) = "Shape Range"
NewSt.Cells(I, 5) = "Full Path"
'NewSt.Cells(I, 6) = "Type"
'NewSt.Cells(I, 6) = "Location"
For sCounter = 2 To 50
'Either we can put all names in an array , here we are printing all the names in Sheet 2
path = Sheets("NameofReport").Range("B" & sCounter).Value
If path = "" Then
GoTo A
Else
Set objWorkbook = appExcel.Workbooks.Open(path)
With NewSt
For Each St In objWorkbook.Worksheets
For Each Cb In St.ChartObjects
I = I + 1
.Cells(I, 1).Value = Cb.Name
.Cells(I, 2).Value = St.Name
On Error Resume Next
'.Cells(I, 3).Value = Cb.Chart.ChartType
.Cells(I, 3).Value = getEnumName(Cb.Chart.ChartType)
.Cells(I, 4).Value = Cb.Chart
.Cells(I, 5).Value = path
'.Cells(I, 5).Value = Cb.QueryTable.CommandType
On Error GoTo 0
'.Cells(I, 7).Value = tb.ResultRange
Next
Next
.Activate
End With
'close the workbooks
objWorkbook.Close
'close the application
appExcel.Quit
End If
A:
Next sCounter
Application.ScreenUpdating = True
End Sub
Function getEnumName(eValue As myEnum) As String
Select Case eValue
Case -4098
getEnumName = "xl3DArea"
Case 78
getEnumName = "xl3DAreaStacked"
Case 79
getEnumName = "xl3DAreaStacked100"
Case 60
getEnumName = "xl3DBarClustered"
Case 61
getEnumName = "xl3DBarStacked"
Case 62
getEnumName = "xl3DBarStacked100"
Case -4100
getEnumName = "xl3DColumn"
Case 54
getEnumName = "xl3DColumnClustered"
Case 55
getEnumName = "xl3DColumnStacked"
Case 56
getEnumName = "xl3DColumnStacked100"
Case -4101
getEnumName = "xl3DLine"
Case -4102
getEnumName = "xl3DPie"
Case 70
getEnumName = "xl3DPieExploded"
Case 1
getEnumName = "xlArea"
Case 76
getEnumName = "xlAreaStacked"
Case 77
getEnumName = "xlAreaStacked100"
Case 57
getEnumName = "xlBarClustered"
Case 71
getEnumName = "xlBarOfPie"
Case 58
getEnumName = "xlBarStacked"
Case 59
getEnumName = "xlBarStacked100"
Case 15
getEnumName = "xlBubble"
Case 87
getEnumName = "xlBubble3DEffect"
Case 51
getEnumName = "xlColumnClustered"
Case 52
getEnumName = "xlColumnStacked"
Case 53
getEnumName = "xlColumnStacked100"
Case 102
getEnumName = "xlConeBarClustered"
Case 103
getEnumName = "xlConeBarStacked"
Case 104
getEnumName = "xlConeBarStacked100"
Case 105
getEnumName = "xlConeCol"
Case 99
getEnumName = "xlConeColClustered"
Case 100
getEnumName = "xlConeColStacked"
Case 101
getEnumName = "xlConeColStacked100"
Case 95
getEnumName = "xlCylinderBarClustered"
Case 96
getEnumName = "xlCylinderBarStacked"
Case 97
getEnumName = "xlCylinderBarStacked100"
Case 98
getEnumName = "xlCylinderCol"
Case 92
getEnumName = "xlCylinderColClustered"
Case 93
getEnumName = "xlCylinderColStacked"
Case 94
getEnumName = "xlCylinderColStacked100"
Case -4120
getEnumName = "xlDoughnut"
Case 80
getEnumName = "xlDoughnutExploded"
Case 4
getEnumName = "xlLine"
Case 65
getEnumName = "xlLineMarkers"
Case 66
getEnumName = "xlLineMarkersStacked"
Case 67
getEnumName = "xlLineMarkersStacked100"
Case 63
getEnumName = "xlLineStacked"
Case 64
getEnumName = "xlLineStacked100"
Case 5
getEnumName = "xlPie"
Case 69
getEnumName = "xlPieExploded"
Case 68
getEnumName = "xlPieOfPie"
Case 109
getEnumName = "xlPyramidBarClustered"
Case 110
getEnumName = "xlPyramidBarStacked"
Case 111
getEnumName = "xlPyramidBarStacked100"
Case 112
getEnumName = "xlPyramidCol"
Case 106
getEnumName = "xlPyramidColClustered"
Case 107
getEnumName = "xlPyramidColStacked"
Case 108
getEnumName = "xlPyramidColStacked100"
Case -4151
getEnumName = "xlRadar"
Case 82
getEnumName = "xlRadarFilled"
Case 81
getEnumName = "xlRadarMarkers"
Case 88
getEnumName = "xlStockHLC"
Case 89
getEnumName = "xlStockOHLC"
Case 90
getEnumName = "xlStockVHLC"
Case 91
getEnumName = "xlStockVOHLC"
Case 83
getEnumName = "xlSurface"
Case 85
getEnumName = "xlSurfaceTopView"
Case 86
getEnumName = "xlSurfaceTopViewWireframe"
Case 84
getEnumName = "xlSurfaceWireframe"
Case -4169
getEnumName = "xlXYScatter"
Case 74
getEnumName = "xlXYScatterLines"
Case 75
getEnumName = "xlXYScatterLinesNoMarkers"
Case 72
getEnumName = "xlXYScatterSmooth"
Case 73
getEnumName = "xlXYScatterSmoothNoMarkers"
Case Else
getEnumName = "unknown"
End Select
End Function
你是什麼意思的「單元格範圍」?你是指圖表中繪製的數據在哪裏?或者在圖表所在的單元格之上? –
我想要在圖表所在的單元格之上。 – user3110224
爲什麼'Enum myEnum'?這些已經內置到Excel VBA中。 –