Microsoft Access 掲示板

見積書~3つのクエリのIDでフィルターを掛けて、エクセルのブックの3シートへそれぞれエクスポートをする / 5

15 コメント
views
4 フォロー
5
ノッチ 2023/05/16 (火) 13:42:09 c8dc0@e817a

お世話様です。ネットの記事を読んで作成しましたが、VBA勉強不足のために途中で止まりました。
以下、2つのコードです。ご教示をよろしくお願いします。
■DAOでエクスポートをしようとした
Private Sub コマンド53_Click()
  Dim SQL As String
  Dim dbs As DAO.Database
  Dim qdf1 As DAO.QueryDef
  Dim qdf2 As DAO.QueryDef
  Dim qdf3 As DAO.QueryDef
  Dim rst1 As DAO.Recordset
  Dim rst2 As DAO.Recordset
  Dim rst3 As DAO.Recordset
  Dim xls As Object
  Dim strSaveBookPath As String
  'テンプレートの保存先フォルダ
Const cstrTemplateDir As String = "\SV30**\metal2*課\HDD\リフォーム見積りDB\見積書\"
  Const cstrTemplateBook As String = "RF見積書.xlsx" 'テンプレートのファイル名
  Const cstrSaveBookDir As String = "\SV30
\metal2***課\HDD\リフォーム見積りDB\見積書\" 'データが代入されたファイルの保存先フォルダ
  Set dbs = CurrentDb  'データ元のクエリを開く
  Set qdf1 = dbs.QueryDefs("Q_見積明細1_P")  'クエリのオブジェクトを取得します
  With qdf1
  'クエリのオブジェクトに対して設定を行います。”抽出する○○ID”などがパラメータ名です
  .Parameters("見積りNo").Value = Forms!F_見積!見積りNo
  Set rst1 = .OpenRecordset  '設定後のクエリオブジェクトを元にRecordsetを開きます
  End With
  Set xls = CreateObject("Excel.Application")  'Excelオブジェクトを生成
  With xls
    .ScreenUpdating = False '画面の再描画を抑止
    .Workbooks.Open cstrTemplateDir & cstrTemplateBook  'テンプレートファイルを開く
    .Workbooks(cstrTemplateBook).WorkSheets("Sheet1").Copy 'ワークシートをコピー
   .DisplayAlerts = False 'テンプレートファイルを閉じる
   .Workbooks(cstrTemplateBook).Save
   .Workbooks(cstrTemplateBook).Close
   .DisplayAlerts = True
    .Cells(2, 1).CopyFromRecordset rst1
  Set qdf2 = dbs.QueryDefs("Q_明細2_R")
  With qdf2
  .Parameters("見積りNO") = Forms!F_見積!見積りNo
  Set rst2 = .OpenRecordset
  End With
  Set xls = CreateObject("Excel.Application")
  With xls

■次に続きます

通報 ...