Microsoft Access 掲示板

開いているAccess単票フォームの情報の一部をEXCELへデータ出力したい

2 コメント
views
5 フォロー

お世話になります。
Access2016を使用しています。

顧客情報の単票フォームで、ボタンをクリックすると
Excelへ転記できるようにしたいと思い下記のようなコードを見様見真似で
作ってみました。

Excelの請求書フォームに必要なお客様情報のみを転記するイメージです。

これだと、どの単票フォームを開いていてもテーブルの1件目のデータしか
出力してくれません。
抽出条件をいれたらいいのかと思うのですが、やり方がわかりません。

ボタンを設置してある単票フォームの顧客IDと一致するデータを
出力という感じでしょうか。

あと、コンボボックスで別テーブルから参照しているデータはそのデータのID番号が
出力されてしまいます。こちらも解決可能でしょうか?


Private Sub EXCEL出力_Click()

Dim dbs As Database
Dim rst As Recordset
Dim intRow As Integer
Dim intCell As Integer
Dim xls As Object

'Q_顧客情報クエリを開く
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Q_顧客情報")

'Excelオブジェクトを生成
Set xls = CreateObject("Excel.Application")
With xls
  '画面の再描画を抑止
  .ScreenUpdating = False
  '既存のブックを開く
  .workbooks.Open ("C:\Users\xxx\Documents\Access_expo_excel\請求書.xlsx")

  '各レコードをExcelに出力

      .Cells(15, 2).Value = rst.Fields("お名前")
      .Cells(16, 2).Value = rst.Fields("〒")
      .Cells(17, 2).Value = rst.Fields("ご住所")
      .Cells(18, 2).Value = rst.Fields("お電話番号")
      .Cells(19, 2).Value = rst.Fields("メールアドレス")
      .Cells(20, 2).Value = rst.Fields("車名")
 
  '画面の再描画を元に戻す
  .ScreenUpdating = True
  'Excelを可視状態にする
  .Visible = True

End With
Set xls = Nothing

End Sub

VBAの基礎知識がないのにサンプルを参考に自分で変更したので、
そもそもおかしかったりしたらご指摘下さい。

どうかよろしくお願いいたします。

masabon
作成: 2019/08/08 (木) 18:13:25
最終更新: 2019/08/08 (木) 19:15:01
通報 ...
1
hatena 2019/08/09 (金) 03:01:52 修正

単票フォームで現在表示されているレコードのデータをエクセルへ転記したいということですよね。

なら、わざわざレコードセットを開かなくても(OpenRecordsetしなくても)、フォームのデータをそのまま代入すればいいでしょう。

提示のコードではシートを指定していないのでエラーになると思いますので、それも修正すると下記のようなコードになると思います。

Private Sub EXCEL出力_Click()

    Dim intRow As Integer
    Dim intCell As Integer
    Dim xls As Object

    'Excelオブジェクトを生成
    Set xls = CreateObject("Excel.Application")
    With xls
        '画面の再描画を抑止
        .ScreenUpdating = False
        '既存のブックを開く
        .Workbooks.Open ("C:\Users\xxx\Documents\Access_expo_excel\請求書.xlsx")

        '各レコードをExcelに出力
        With .Workbooks("請求書.xlsx").WorkSheets(1)
            .Cells(15, 2).Value = Me!お名前
            .Cells(16, 2).Value = Me!〒
            .Cells(17, 2).Value = Me!ご住所
            .Cells(18, 2).Value = Me!お電話番号
            .Cells(19, 2).Value = Me!メールアドレス
            .Cells(20, 2).Value = Me!車名
        End With
  '画面の再描画を元に戻す
  .ScreenUpdating = True
  'Excelを可視状態にする
  .Visible = True

End With
Set xls = Nothing

End Sub

Me!フィールド名 でフォームに表示されているデータを参照できます。

2
masabon 2019/08/09 (金) 15:07:16 acaac@26db7

早速のご回答ありがとうございます!!
おかげさまでできました。
Me!でしたら、コンボボックスの件も Me!車名.Column(1) でクリアできました。
初心者にもわかりやすい解説付きでご教授いただき本当にありがとうございました!