電子書籍の厳選無料作品が豊富!

Accessフォームのイベント内に下記プロジャーを追加したいのですが教えてください。

クエリ Q_AAA をExcelにエクスポート(C:\AAA.xls)←AAA.xlsは元々存在します。
エクスポートしたExcelを開く

よろしくお願いします。

A 回答 (2件)

【既存のAAA.xlsを削除(上書き)する場合】


フォームの当該イベントのプロシージャに、以下のコード1行を追加するだけでOkです:

  DoCmd.OutputTo acOutputQuery, "Q_AAA", acFormatXLS, "c:\AAA.xls", True

 ※引数の詳細については「OutputTo」か「出力」のヘルプをみてみて下さい。

【既存のAAA.xlsにワークシートを追加する場合】
フォームの当該イベントのプロシージャに、以下のコードを追加して下さい:

  Dim sTemp As String
  'ファイルパスを定数として宣言
  Const sFilePath As String = "c:\AAA.xls"

  '現在の日時を取得
  sTemp = Format(Now(), "yymmddhhnn")

  '上記日時を名前として、クエリQ_AAAを複製
  DoCmd.CopyObject "", sTemp, acQuery, "Q_AAA"

  '既存のAAA.xlsにワークシートを追加する形で出力
  '(ワークシートの名前は、出力したクエリと同じ(=上記日時)になります)
  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, sTemp, sFilePath

  '別名保存したクエリを削除
  DoCmd.DeleteObject acQuery, sTemp

  'AAA.xlsを開く
  Application.FollowHyperlink sFilePath


・・・以上です。
    • good
    • 0

順番を変えて、


エクスポートしたいExcelブックAAA.xlsを開く←AAA.xlsは元々存在します。
クエリ Q_AAA をExcelに出力(追記と解釈しました)

でも良ければ、スケルトンですが、下記の通りでいけると思います。
エクスポートでなければ嫌だという事なら、スルーしてください。
Sub output_to_Excel()
Dim rs As New ADODB.Recordset
Dim objEXCEL As Object, wbk As Object, sh As Object
Dim i As Long, j As Long
Const xlUp = -4162

'Excelを起動する
Set objEXCEL = CreateObject("Excel.Application")
objEXCEL.Visible = True
'エクセルのファイルは、mdbと同じ場所にあるとする
Set wbk = objEXCEL.Workbooks.Open(CurrentProject.Path & "\" & "AAA.xls")
Set sh = wbk.sheets("Sheet1")
i = sh.range("A" & sh.rows.Count).end(xlUp).row + 1
rs.Open "Q_AAA", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Do While Not rs.EOF
With sh
For j = 1 To rs.Fields.Count
.cells(i, j).Value = rs.Fields(j - 1).Value
Next j
i = i + 1
End With
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
End Sub
    • good
    • 0

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


おすすめ情報