アプリ版:「スタンプのみでお礼する」機能のリリースについて

OS:windows2000pro
アクセスバージョン:アクセス2000
エクセルバージョン:エクセル2000

投稿場所はここでいいのかちょっとわからないですが、投稿します。
素人です。もうしわけないですm(_ _)m
アクセスのテーブルのデータを既存のエクセルの指定したワークシートの指定したセルに送りたいのですが、うまくいきません。

やりたいことは、あらかじめグラフ表示用のエクセルファイルを作成しておいて、アクセスから指定したセルにデータを送り、その直後そのエクセルファイルを開くようにしたいのです。開いた後も、閉じるとアクセスに戻るようにしたいと思います。

現在はマクロのワークシート変換でやろうかと四苦八苦しています。
範囲のところに、
test!A1:X1
といった感じで指定しています。一回目はうまくいきますが、二度目はデータが残っているためか、失敗してしまいます。
現在考えている対処法は、エクセルファイルの表示画面に閉じるボタンを用意し、それが押されることで、データが記載されているシートの内容を削除し、エクセルを閉じるというようにしようと思っています。

お聞きしたいのは、エクセルVBAで、このような動作が可能かどうか。
また、より簡単で効率の良い方法があれば教えていただければ幸いです。
よろしくお願いしますm(_ _)m

A 回答 (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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!