お世話になります。
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の基礎知識がないのにサンプルを参考に自分で変更したので、
そもそもおかしかったりしたらご指摘下さい。
どうかよろしくお願いいたします。
単票フォームで現在表示されているレコードのデータをエクセルへ転記したいということですよね。
なら、わざわざレコードセットを開かなくても(OpenRecordsetしなくても)、フォームのデータをそのまま代入すればいいでしょう。
提示のコードではシートを指定していないのでエラーになると思いますので、それも修正すると下記のようなコードになると思います。
Me!フィールド名 でフォームに表示されているデータを参照できます。
早速のご回答ありがとうございます!!
おかげさまでできました。
Me!でしたら、コンボボックスの件も Me!車名.Column(1) でクリアできました。
初心者にもわかりやすい解説付きでご教授いただき本当にありがとうございました!