• 締切済み

Accessで作成したグラフをVBで表示

VB2005についてです。 Accessで作成したグラフをVBにどうやって表示させればいいのでしょうか? 教えてください。

みんなの回答

回答No.3

Access のフォームで作ったグラフを VB で表示させるってことは、VB から Access を起動して、目的の MDB ファイルを開いて、目的のフォームを開かせるってことです。 ここでちょっと待ったです。 その VB アプリと、MDB の関係ってそれだけですか? もしかしたら MDB の中のテーブルを VB アプリから操作してませんか? VB で作ったフォームで MDB の中のデーターを操作してませんか? 操作しているんだったら、、、 データーの操作にあたって、ユーザーには MDB の存在を見せてないですよね。 だったらグラフ表示の際にも MDB の存在は見せず、VB アプリの中でグラフを見せたいはず。 であるなら VB 用のグラフ コンポーネントでグラフを描画すべきです。 #1 さんの回答のとおりです。 操作していないのだったら、、、 VB アプリとは別のタイミングで、場合によっては別のユーザーによって、MDB のフォームでデーターの操作がなされている。 VB アプリは会社の偉い人がグラフを見るだけのために存在する。 そのぐらいデーター操作とグラフ閲覧がかけ離れているのなら、、、 VB アプリを作る意味、よくわからないですね。 #2 さんのように VB アプリから MDB を開いてグラフ用のフォームを開く。 または、、、やっぱり偉い人にも MDB を開いてもらう。

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.2

#1 です。 VB.NET 2005 側から Office を操作するには OLE オートメーション 参考HP → http://home.att.ne.jp/zeta/gen/excel/c04p44.htm でオブジェクトを直接操作する方法があります。 たとえば Excel の Book を 開き、データをシートに貼り付け そのシートを印刷させるとかです。 年賀はがきの作成やアマチュア無線の交信証明のはがきを作成するのに つかっています。 __________________________________<サンプル>_________________________________________________ '-- ********************************************************************************* '-- * [ ComExcel ] '-- * '-- * Excel OBJECT 操作関数 EXCEL 2000 以上で動作確認済み '-- * '-- ********************************************************************************* ''' <summary> ''' Excel共通処理 ''' </summary> Public Class ComExcel '-------------------------------------------------------------------------------- ' ワーク定義 '-------------------------------------------------------------------------------- Friend m_objApp As Object = Nothing 'Excelアプリ Friend m_objBooks As Object = Nothing 'ブックコレクション Friend m_objBook As Object = Nothing 'ブック Friend m_objSheets As Object = Nothing 'シートコレクション Friend m_objSheet As Object = Nothing 'シート '-------------------------------------------------------------------------------- ' プロパティ定義 '-------------------------------------------------------------------------------- Private m_strErrorMsg As String = String.Empty ''' <summary>エラーメッセージ</summary> Public ReadOnly Property ErrorMsg() As String Get Return m_strErrorMsg End Get End Property ''' -------------------------------------------------------------------------------- ''' <summary> ''' Excel開始 ''' </summary> ''' <param name="I_blnVisible">Excel表示有無(デフォルト:False[非表示])</param> ''' <exception cref="Exception">Excelオープンエラー</exception> ''' -------------------------------------------------------------------------------- Public Sub ExcelStart(Optional ByVal I_blnVisible As Boolean = False) m_strErrorMsg = String.Empty Try 'Excelアプリ m_objApp = CreateObject("Excel.Application") m_objApp.Visible = I_blnVisible '警告メッセージ表示有無 m_objApp.DisplayAlerts = False 'ブックコレクション m_objBooks = m_objApp.Workbooks Catch ex As Exception m_strErrorMsg = "Excel開始エラー→" & Environment.NewLine & ex.Message Throw New Exception(m_strErrorMsg) End Try End Sub ''' -------------------------------------------------------------------------------- ''' <summary> ''' Excel終了 ''' </summary> ''' <exception cref="Exception">Excelクローズエラー</exception> ''' -------------------------------------------------------------------------------- Public Sub ExcelEnd() m_strErrorMsg = String.Empty Try 'ブッククローズ If (m_objBook IsNot Nothing) Then BookClose() End If 'ブックコレクション開放 ps_ReleaseComObject(m_objBooks) If (m_objApp IsNot Nothing) Then 'Excelアプリ終了 m_objApp.DisplayAlerts = True m_objApp.Quit() ps_ReleaseComObject(m_objApp) End If Catch ex As Exception m_strErrorMsg = "Excel終了エラー→" & Environment.NewLine & ex.Message Throw New Exception(m_strErrorMsg) End Try End Sub ''' -------------------------------------------------------------------------------- ''' <summary> ''' ブックオープン ''' </summary> ''' <param name="I_strWorkBookName">ワークブック名</param> ''' <param name="I_objSheetName">シート名またはシートNo.(デフォルト:先頭シート)</param> ''' <exception cref="Exception">ブックオープンエラー</exception> ''' -------------------------------------------------------------------------------- Public Sub BookOpen(ByVal I_strWorkBookName As String, Optional ByVal I_objSheetName As Object = 1) m_strErrorMsg = String.Empty Try 'ブッククローズ If (m_objBook IsNot Nothing) Then BookClose() End If 'ブック m_objBook = m_objBooks.Open(I_strWorkBookName) 'シートコレクション m_objSheets = m_objBook.Worksheets 'シート m_objSheet = m_objSheets.Item(I_objSheetName) Catch ex As Exception m_strErrorMsg = "Excelオープンエラー→" & Environment.NewLine & ex.Message Throw New Exception(m_strErrorMsg) End Try End Sub ________________________________________________________________________________ ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇ 同様に ACCESS でも オブジェクトの操作ができます。 下記は VB2005 のプロジェクトに各種、参照の設定が必要になります。 添付した画像をご覧ください。 _______________________________<サンプル>_________________________________________________ Imports MYQSL_APP.MyQSL.Common 'Microsoft Office 2003 Access のライブラリ Imports Microsoft.Office.Interop.Access Public Class MsAccess_QSL_Print Private m_AccessOBJ As Microsoft.Office.Interop.Access.ApplicationClass Public Sub S_Report_Print(ByVal P_Where As String) Dim cl As New MyQSL.Common.Jousu Dim StrCurPath = My.Application.Info.DirectoryPath '実行パスの取得 Dim StrMdbPath = StrCurPath & "\MDB\QSO_LOG.mdb" m_AccessOBJ = New Microsoft.Office.Interop.Access.ApplicationClass m_AccessOBJ.OpenAccessProject(G_DB_FullPath) m_AccessOBJ.DoCmd.OpenReport("R_QSLカード", AcView.acViewDesign, , P_Where, AcWindowMode.acWindowNormal) m_AccessOBJ.CloseCurrentDatabase() System.Runtime.InteropServices.Marshal.ReleaseComObject(m_AccessOBJ) End Sub End Class ________________________________________________________________________________ ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇ そのほかに VSTO というものがあります。 Microsoft Offce 2003 以降のバージョンで あれば使えます。 ただし VSTO は別途購入しなくてはなりませんが・・・ VSTOは あたかもEXCELやWORDの機能の一部のように コマンドボタンや 入力フォームを表示させて さまざまな機能の追加が行えるようにしたものです。 MSDN ライブラリにチュートリアル がありますので そちらをご覧ください。 はじめに (Visual Studio Tools for Office) → http://msdn.microsoft.com/ja-jp/library/23cw517s(VS.80).aspx Office 開発のチュートリアル → http://msdn.microsoft.com/ja-jp/library/ebax1172(VS.80).aspx ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇ 上記の操作方法で Access オブジェクト を扱えば なんとかなるのではないかと思います。 __________________________________________________________________________________________________

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.1

通常、グラフを表示する場合は OCX(有料)のソフトを購入することなるはずです。 グラフ関連のOCXは使用したことがないのでわからないのですが たとえば グレープシティ(http://www.grapecity.com/japan/support/database/dotnet_productlist.htm) から発売されている商品です。 Excel や Access のグラフ を直接、VB.NET 2005 のフォームに表示するのはできないと思いますが・・・・ Google で調べてみると  【VB.NET】グラフコントロール(ZedGraph) http://www.atmarkit.co.jp/fdotnet/vblab/extcompo_02/zedgraph_01.html なるOCX(無料)がありますね。 これでなんとかなればいいのですが。  ただ、単に Access のフォームを起動したいのであれば Shell 関数で Access を起動して 目的のフォームを表示してあげればよろしいと思います。 OCXを使って表示させるには Access (MDB もしくはADP ) のデータを データセットとして VB.2005 側から操作できるようにしてあげればOKです。

関連するQ&A

  • VBでのグラフ表示

    VB6.0 ACCESS2000で開発しています。 ACCESSにあるデータをグラフ表示したいのですが 今までグラフの表示をしたことがないので 出来るだけ簡単で見栄えが良くてお金がかからないもの があったら教えて欲しいのですが。 円グラフと棒グラフを表示したいです。 印刷もしたいのです。 よろしくお願いします。

  • VBでエクセルのグラフ表示について

    VB6.0でACCESSで作成したデータベースから値をSQLにて取り出しエクセルを介し棒グラフと円グラフを表示するプログラムを作っています。 グラフの表示についてなのですが、それぞれの項目に値とパーセンテージの両方を表示させたいと思っております。どちらか片方のみ表示させることならば出来たのですが両方は出来ませんでした。 両方表示させる方法がありましたら教えていただけると助かります。 よろしくおねがいします。

  • VBでエクセルのグラフを表示したい

    VB6.0とエクセル2003を使っているのですがまずVBから値を取得してエクセルでグラフを作りそのグラフをまたVBに表示したいのですが一回画像ファイルにしてオブジェクトのイメージで表示するしかないのでしょうか?そうであればエクセルのグラフを画像ファイるに直す方法も教えてください。

  • vb.net(vs2008)でのグラフ作成について

    vb.net(vs2008)でのグラフ作成について こんにちは 今、vb.netでグラフを作成しようとしているのですが、うまくいかないので 質問させて頂きます。 グラフ作成に、ZedGraphを使っていまして、単純にX軸Y軸に値を設定し、 グラフを表示することはできています。 しかし、X軸を日付にしたいのですが、うまくいかず困っております。 値を追加するときにPointPairListを使うと、引数がDouble型しかダメみたいなのです。 もしかしたら、初歩的なことかもしれませんが、X軸を日付にする方法を ご存知でしたら、ご教授願います。 また、ZedGraphではなく他の方法でグラフ作成できる方法がありましたら、 合わせて教えていただけると嬉しいです。 よろしくお願いします。

  • VB6でグラフを表示する方法

    みなさん教えてください。 今VB6で、下記のようにグラフを表示するソフトを作成しています。 (1)Text1、Text2、Text3に数値を入力する (2)(1)後「グラフ作成」ボタンを押すと、入力値がテキストファイル「data.txt」に書き出される。 (3)(2)後、赤枠エリアに例のようなグラフ(折れ線グラフ)が作成される →「PictureBox」か「Microsoft Graph 10.0 Object Library」を用いて、エクセルで表示するようなグラフを作成したい 上記(1)~(3)のような動きをするソフトを作成しているのですが、(2)の段階で苦戦しています。悩んでいます。 みなさん、よいアドバイスを頂けないでしょうか。 サンプル構文をのせて頂けたらうれしいです。 よろしくお願い致します。

  • VBを使ったシステムでのグラフ表示

    現在VBを使って一つのシステムを作っています。DBからデータを取得してそのデータをリストとグラフを使って表示したいと思っています。グラフ表示の部分をMicrosoft Chart Controlを使って作成したのですが、X軸ラベルの表示方向がプロパティで設定できなかったり、印刷すると文字が汚くなったりして満足いくグラフができません。解決策を探したのですが見つからないので他の方法でグラフを作りたいと思っています。なにかグラフが作れるいい方法(ツール)などがありましたら教えてください。

  • アクセス2000で日付をグラフ表示したい

    予定のデータベースを作ろうと思いますが、ガンスケのようなバーグラフで表示する方法を教えてください。1つ目のデータが12/5で2つ目のデータが12/10の場合、12/5~12/10の間にバーが引かれるもの。 バーグラフは横軸方向とし、このデータの集まりが10~20程度あり、グラフの目盛りが最大・最小のプラス1週間程度で自動的に割り振られるようにしたい。 標準のグラフにはなく、アドインにも適当なものを探せませんでした。 VBで作成した場合のアクセスとのデータのやり取りや、アクセスのレポートへの表示方法もわかりません。 どなたか、助けていただけないでしょうか。ヒントをいただけたら幸いです。

  • ACCESSでのグラフ作成

    ACCESS2000を使用しています. クエリーで選択したデータを使用して、フォーム/レポート? 機能を使用してグラフを作成したいのですが、どうすれば良いのでしょうか? EXCELのグラフでは、データの件数で制限があるみたいなので、ACCESSで作成しようと思っています. ACCESSでもデータ件数等の制限があるのでしょうか? データは7万件ほどあります.

  • VBでグラフ表示をするにあたって

    Excelを利用するか、市販のOCXを使用するか迷っています。 この2点を比べるにあたって、 こういうところが違うからこっちの方が良いということを 説明していただけると助かります。 ちなみにVB6.0(SP5)+SQLSERVER2000の環境です。 SQLSERVERの中のデータをグラフ表示しようと思っています。 グラフは、棒グラフ、円グラフ、折れ線グラフなど 何種類か使用する予定です。 もしExcelを使うことになればExcel97になります。 よろしくお願いします。

  • グラフの作成について

    VB画面でグラフを表示する方法として MSChartを使う方法や Excelで作成したグラフを ピクチャーボックスに貼り付ける方法を ご紹介していただきました。 今回は縦棒グラフでかまわないのですが、 横軸を時間軸とした場合に、 非常に長いので、横スクロールバーを使って グラフ表示させる方法が分かる方、 ご教授ください。 よろしくお願いいたします。

専門家に質問してみよう