• 締切済み

アクセスからエクセルへのデータ転送、その後グラフ表示

OS:windows2000pro アクセスバージョン:アクセス2000 エクセルバージョン:エクセル2000 投稿場所はここでいいのかちょっとわからないですが、投稿します。 素人です。もうしわけないですm(_ _)m アクセスのテーブルのデータを既存のエクセルの指定したワークシートの指定したセルに送りたいのですが、うまくいきません。 やりたいことは、あらかじめグラフ表示用のエクセルファイルを作成しておいて、アクセスから指定したセルにデータを送り、その直後そのエクセルファイルを開くようにしたいのです。開いた後も、閉じるとアクセスに戻るようにしたいと思います。 現在はマクロのワークシート変換でやろうかと四苦八苦しています。 範囲のところに、 test!A1:X1 といった感じで指定しています。一回目はうまくいきますが、二度目はデータが残っているためか、失敗してしまいます。 現在考えている対処法は、エクセルファイルの表示画面に閉じるボタンを用意し、それが押されることで、データが記載されているシートの内容を削除し、エクセルを閉じるというようにしようと思っています。 お聞きしたいのは、エクセルVBAで、このような動作が可能かどうか。 また、より簡単で効率の良い方法があれば教えていただければ幸いです。 よろしくお願いしますm(_ _)m

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 ちょっと考えてみました。 >現在はマクロのワークシート変換でやろうかと四苦八苦しています。 そのワークシート変換を使ってみました。 私も、これでは、四苦八苦に入りますね。もうちょっときれいな格好に出来ないかとは思っています。不恰好ですが、Excelを呼び出して、インポートさせるよりも、ずっと、この方が簡単なんですよね。 コードの指示を読んで、実際のファイル名やシートを指定してください。 >あらかじめグラフ表示用のエクセルファイルを作成しておいて、アクセスから指定したセルにデータを送り、その直後そのエクセルファイルを開くようにしたいのです。 それは、無理なんですが、以下のコードの場合、私は、グラフ作成マクロの方がよいとは思っているのですが、今は、データだけを送って、グラフを変更させるのは試していません。もし、そうなら、UsedRange.Copyを Range("A1").CurrengRegion.Copy の方が無難かもしれません。貼り付け側は、今度は、Range("A1").SpecialPaste などとしてやります。 とりあえず、テスト用として、掲示しておきます。 Private Sub コマンド1_Click()  On Error GoTo Err_コマンド1_Click  Dim xlApp As Object  Dim Fn As String  Dim xlFn As String  Fn = "c:\$ac2xl.xls" 'テンポラリブック  xlFn = "c:\Test1.xls" '実際のブック 'テーブル名を入れてください。  DoCmd.OutputTo acOutputTable, _          "テーブル名", _          acFormatXLS, _          Fn, _          True, ""  Set xlApp = GetObject(, "Excel.Application")  'xlApp.Visible = True 'これがなくても、ブックは見える    With xlApp   .ScreenUpdating = False '画面のちらつきをなくする   .ActiveWorkbook.Worksheets(1).UsedRange.Copy   .Workbooks.Open xlFn    '実際のワークシート(以下は、インデックスを使っていますが名前でも可)   .ActiveWorkbook.Worksheets(2).Paste    .ActiveWorkbook.Worksheets(2).Activate   .ScreenUpdating = True    'Excel側のマクロを呼び出し例/グラフマクロを作ってください。         .Run .ActiveWorkbook.Name & "!testmacro"    'ブック側の標準モジュールの testmacro を呼び出す       .ActiveWorkbook.Close True   .UserControl = True Exit_コマンド2_Click:  On Error Resume Next   .DisplayAlerts = False 'クリップボードを無視させる   .Quit   .DisplayAlerts = True   Kill Fn 'テンポラリブックの削除 End With  Set xlApp = Nothing  Exit Sub Err_コマンド1_Click:  MsgBox Err.Description  Resume Exit_コマンド1_Click End Sub

関連するQ&A