List(Of Decimal)
VBを使用してExcelの値からプロットを作成することは可能ですか?データをテーブルに直接ダンプして、そこからグラフを作成することは避けたいと思います。これが私がこれまでに持っているものですが、リストに割り当てようとすると、データ型の不一致が発生.XValues
し.Values
ます。リストをシリーズに変換するために発生する必要があるある種の変換はありますか?
Dim Series As Excel.Series
Dim xVals As New List(Of Decimal)(New Decimal() {1, 3, 4, 5})
Dim yVals As New List(Of Decimal)(New Decimal() {2, 2, 2, 2})
xlWorkSheet = CType(Globals.ThisAddIn.Application.Worksheets.Add(), Excel.Worksheet)
xlWorkSheet.Activate()
xlWorkSheet.Name = "My Sheet"
xlCharts = xlWorkSheet.ChartObjects
xlChartObj = xlCharts.Add(150, 30, 400, 250)
xlChart = xlChartObj.Chart
With xlChart
.ChartType = Excel.XlChartType.xlXYScatterLines
.HasLegend = True
.Legend.Position = Excel.XlLegendPosition.xlLegendPositionRight
.HasTitle = True
.ChartTitle.Text = "Test Chart"
For i = 0 To channels.Count - 1
.SeriesCollection.NewSeries()
Series = .SeriesCollection(i + 1)
Series.XValues = xVals
Series.Values = yvals
Next
.Location(Excel.XlChartLocation.xlLocationAsNewSheet)
End With
アップデート:
次のコードは機能するようですが、あまり理想的ではありません。私が行ったように配列を配列の文字列表現に変換する以外に、これを行うためのより良い方法はありますか?
Dim Series As Excel.Series
Dim xVals As New List(Of Decimal)(New Decimal() {1, 3, 4, 5})
Dim yVals As New List(Of Decimal)(New Decimal() {2, 2, 2, 2})
Dim xString As String
Dim yString As String
xlWorkSheet = CType(Globals.ThisAddIn.Application.Worksheets.Add(), Excel.Worksheet)
xlWorkSheet.Activate()
xlWorkSheet.Name = "My Sheet"
xlCharts = xlWorkSheet.ChartObjects
xlChartObj = xlCharts.Add(150, 30, 400, 250)
xlChart = xlChartObj.Chart
With xlChart
.ChartType = Excel.XlChartType.xlXYScatterLines
.HasLegend = True
.Legend.Position = Excel.XlLegendPosition.xlLegendPositionRight
.HasTitle = True
.ChartTitle.Text = "Test Chart"
For i = 0 To channels.Count - 1
.SeriesCollection.NewSeries()
Series = .SeriesCollection(i + 1)
xString = "={"
xString += xVals(0).ToString
For k = 1 To xVals.Count - 1
xString += ","
xString += xVals(k).ToString
Next
xString = "}"
yString = "={"
yString += yVals(0).ToString
For k = 1 To yVals.Count - 1
yString += ","
yString += yVals(k).ToString
Next
yString = "}"
Series.XValues = xString
Series.Values = yString
Next
.Location(Excel.XlChartLocation.xlLocationAsNewSheet)
End With