- ベストアンサー
クエリ抽出条件の設定方法とエクセルテンプレートへのデータ出力方法
- クエリ抽出条件の設定方法について、簡単に説明します。現在のシステムでは、各地域の名簿を管理しています。フォームの各地域ボタンを押すと、その地域の名簿を抽出条件として設定し、表示することができます。しかし、エクセルに出力する際に、テンプレートにデータを出力する方法が不明です。
- クエリ抽出条件を設定する方法ですが、ボタンを押すだけで設定できるようにするには、いくつかの方法があります。1つは、フォームのボタンでクエリを生成し、ApplyFilterを使用して抽出する方法です。別の方法としては、VBAを使用してクエリを作成し、適用する方法もあります。
- エクセルテンプレートへのデータ出力方法については、現在のシステムではエクセルテンプレートに直接データを出力することができません。しかし、クエリの抽出条件を利用して、テンプレートにデータを出力する方法があります。その際には、VBAを使用してクエリの抽出結果を取得し、テンプレートにデータを書き込むことができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ご質問の内容とは異なり、従来法の延長ですが、フォームに出力用のボタンを設けて、下記の様な方法で如何でしょうか。 Private Sub コマンドxx_Click() Dim objXl As Object Dim tempWbk As Object, newWbk As Object Const xlPasteValues = -4163 'フォームのフィルターのかかったデータをテンポラリファイルにエクスポート DoCmd.OutputTo acOutputForm, Me.Name, acFormatXLSX, CurrentProject.Path & "\temp.xlsx" Set objXl = CreateObject("Excel.Application") 'テンプレートを元に新規ブックを作成 Set newWbk = objXl.workbooks.Add(CurrentProject.Path & "\template.xltx") 'テンポラリファイルを開く Set tempWbk = objXl.workbooks.Open(CurrentProject.Path & "\temp.xlsx") 'ここはご自分でお好きな様に作り込んで、テンポラリファイル→新規ブックにデータ転送して下さい。 tempWbk.worksheets(1).range("A1").currentregion.copy newWbk.worksheets(1).range("A1").pastespecial Paste:=xlPasteValues '新規ブックを保存 newWbk.SaveAs CurrentProject.Path & "\newData.xlsx" '後始末 newWbk.Close tempWbk.Close objXl.Quit Set objXl = Nothing End Sub
お礼
一旦出力したものをテンプレに移し替えるんですね。 そこまで思いいたっていませんでした。 コードを真似て適用したら上手く動作してくれました。 ほんとうにありがとうございます。