我正在尝试创建一个makro,以便根据存储在csv文件中的数据自动生成powerpoint 2010中的图表。我得到了生成图表并阅读csv文件,但现在我仍然坚持显示数据。
到目前为止,这是我的代码:
Sub CreateChart()
Dim myChart As Chart
Dim gChartData As ChartData
Dim gWorkBook As Excel.Workbook
Dim gWorkSheet As Excel.Worksheet
Dim strPath As String
Dim lngLastRow As Long
Dim mySystemFileObject
' Create the chart and set a reference to the chart data.
Set myChart = ActivePresentation.Slides(1).Shapes.AddChart.Chart
Set gChartData = myChart.ChartData
' read the csv file
strPath = "C:\path\to\my\data.csv"
' Set the Workbook and Worksheet references.
Set gWorkBook = gChartData.Workbook
Set gWorkSheet = gWorkBook.Worksheets(1)
With gWorkSheet.QueryTables.Add(Connection:="TEXT;" & strPath, Destination:=gWorkSheet.Range("A1"))
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = " "
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = True
.Refresh
End With
gWorkBook.RefreshAll
' Does not work, returns Runtime Error 1004
'gWorkSheet.ListObjects("Tabelle1").Resize gWorkSheet.Range("A1:G5")
myChart.SetSourceData ("='Tabelle1'!A7:G74")
myChart.Refresh
'gWorkSheet.Range("A7:G74").Select
' Clean up the references.
Set gWorkSheet = Nothing
' gWorkBook.Application.Quit
gWorkBook.Close
Set gChartData = Nothing
Set myChart = Nothing
End Sub
现在的问题是用VBA选择范围A1:G74并在图表中显示数据。可能我只是错过了正确的功能。 任何想法或帮助表示赞赏!
祝你好运, 吉姆
答案 0 :(得分:0)
解决方案是,一次只能改变一个方向。
所以我通过将csv数据作为文本文件读取来解决问题,而不是调整图表范围,然后用csv文件中的数据填充图表
strRange = "A1:D" + CStr(UBound(tmpData.XValues))
gWorkSheet.ListObjects("Tabelle1").Resize gWorkSheet.Range(strRange)
' change dim 2
If ((UBound(myData, 2) * 2) + 1 > 4) Then
strRange = "A1:" + HelperFunctions.ConvertToLetter2((UBound(myData, 2) * 2) + 1) + CStr(UBound(tmpData.XValues))
gWorkSheet.ListObjects("Tabelle1").Resize gWorkSheet.Range(strRange)
End If
然后通过以下方式将数据写入单元格:
For l = 1 To UBound(tmpData.XValues)
gWorkSheet.Cells(l, k + 1).Value = tmpData.XValues(l - 1)
gWorkSheet.Cells(l, k + 2).Value = tmpData.YValues(l - 1)
Next