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