DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VB2010で、ExcelのChart(グラフ)の各種制御がしたいです。

環境/言語:[Windows7 32bit Visual Basic 2010 Excel2010 NET Framework4.5.1]
分類:[.NET]

はじめて投稿させていただきます。

タイトルの質問ですが、Visual Basic 2010のプログラムからExcelを起動し、データを書き込んで、そのデータを元にグラフ化するというプログラムを作成しています。

かなり簡略化したコードですが、このようになります。

-----------------------------
Dim oXls1 As Microsoft.Office.Interop.Excel.Application
Dim wkb01 As Microsoft.Office.Interop.Excel.Workbook
Dim wks01 As Microsoft.Office.Interop.Excel.Worksheet
Dim myRange1 As Microsoft.Office.Interop.Excel.Range
Dim myRange2 As Microsoft.Office.Interop.Excel.Range

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

oXls1 = New Microsoft.Office.Interop.Excel.Application
oXls1.Visible = True
wkb01 = oXls1.Workbooks.Add()
wks01 = wkb01.Worksheets.Add()


myRange1 = wks01.Range("A20")
myRange2 = myRange1.Offset(1)

myRange1.Value = "試験1"
myRange2.Value = "試験2"


For i As Integer = 20 To 1 Step -1
myRange1 = myRange1.Offset(0, 1)
myRange1.Value = i
Next

For n As Integer = 40 To 2 Step -2
myRange2 = myRange2.Offset(0, 1)
myRange2.Value = n
Next

myRange1 = wks01.Range("A20")
myRange1 = wks01.Range(myRange1.End(Microsoft.Office.Interop.Excel.XlDirection.xlDown).Address, myRange1.End(Microsoft.Office.Interop.Excel.XlDirection.xlToRight).Address)

Dim oChart As Microsoft.Office.Interop.Excel.ChartObject
oChart = wks01.ChartObjects.Add(1, 1, 600, 200)

With oChart.Chart
.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLineMarkers
.SetSourceData(Source:=myRange1)
End With

End Sub
-----------------------------

参照の追加のCOMでEXCELを追加する必要はありますが、このコードでボタンを押すと、EXCELが立ち上がり、シートが1枚追加されてデータが書き込まれ、それを元にした線グラフが表示されます。

ところが、この後で詰まってしまいました。

希望として、この出来上がったグラフは、数字が小さい程、上に表示される「軸反転」グラフにしたいのと、最小値を1に、最大値を40に設定したいのです。

ExcelのVBAなら

ActiveChart.Axes(xlValue).ReversePlotOrder = True
ActiveChart.Axes(xlValue).MaximumScale = 45
ActiveChart.Axes(xlValue).MaximumScale = 40


で設定できるので、Visual Basic 2010からも設定できるだろうと思ったのですが、oChart.Chart のwith中に組み込もうとすると、「xlValue は宣言されていない」エラーメッセージが出てしまい、どうしても設定方法を見つけられず、ご教授をお願いしたいと思います。

Visual Basic でEXCELをコントロールし、Chart(グラフ)を挿入して、書式などを修正する方法を教えていただけますでしょうか?

よろしくお願いいたします。
xlValue Microsoft.Office.Interop.Excel
みたいにして検索すると
http://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.excel.axis%28v=office.11%29.aspx
こういう感じのページが見つかってどの列挙型に定義されているか見つけられますね。
> こういう感じのページが見つかってどの列挙型に定義されているか見つけられますね。

ありがとうございます。

確かに見付かるのですが……申し訳ありません。見付かったページでは私には解決ができませんでした。

使用方法、宣言 のコードともに、テストコードに写してみましたが、「定義されていません」「ステートメントが無効です」などエラーが出てしまいます。

「列挙型に定義されているか見つけられます」との事ですが、
.Axes(Microsoft.Office.Interop.Excel.xlValue).ReversePlotOrder = True

のように、名前空間を写してみても「メンバーでは無い」とのエラーになります。

このページから、何をどのように読んで適用したらよいのか、サンプルのようなものはないでしょうか?

※VBのスクールにも行っているのですが、MSDNのライブラリの読み方は出て来ていないので、申し訳ないです。
Keys列挙型を参照するときいきなりF4だのAだの書かずに、Keys.F4とかKeys.Aとか書くのと同じです。
http://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.excel.xlaxistype%28v=office.11%29.aspx
> Keys列挙型を参照するときいきなりF4だのAだの書かずに、Keys.F4とかKeys.Aとか書くのと同じです。

ありがとうございます。
解決いたししました。

EXCEL.VBA
ActiveChart.Axes(xlValue).ReversePlotOrder = True

Visual Basic 2010
ChartObjectsの
.ChartAxes(Microsoft.Office.Interop.Excel.XlAxisType.xlValue).ReversePlotOrder = True

で、希望通り、軸反転グラフになりました。
ありがとうございます。

この icrosoft.Office.Interop.Excel.XlAxisType の部分を探し出すことができずに苦労しておりました。

範囲指定に使用している xlDown も、VBAではそのまま動くのに、VBでは苦労して、ネットのサンプルコードからMicrosoft.Office.Interop.Excel.XlDirection を見つけましたが

xlDown Microsoft.Office.Interop.Excel
で検索すると、XlDirection 列挙型で見付かりました。

大変、勉強になりました。ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板