• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクセスからVBAでエクセルに出力する方法)

アクセスからVBAでエクセルに出力する方法

mitarashiの回答

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

もっぱらADOを使っておりますが、本課題はDAOの方が楽だと考え、諸サイトを参考に作成してみましたが、#2のリンク先で、DAOを用いているコードとほぼ同じですね。一時的なクエリを作成している(事前にダミーのクエリを作っておく必要なし)のが違っているのと、一時的なテーブルを作成していますが、これはdb.OpenRecordsetに直接SQLを与えてRecordsetを取得すれば必要がない様です。折角作ったので、ご参考までに載せておきます。テーブル名の記載がなかったので、「Table名」という名前のテーブルで記述しています。 'DAOに参照設定要 Sub test() Dim db As DAO.Database Dim qdf As QueryDef Dim RS As DAO.Recordset Dim mySQL As String, destFileName As String Dim i As Integer '重複しない会社名リストを作成、IDを用いる方がベター Set db = CurrentDb mySQL = "SELECT DISTINCT KAISYA_MEI INTO T_KAISHA_LIST FROM Table名;" db.Execute mySQL '会社名リストの各レコードについて処理 Set RS = db.OpenRecordset("T_KAISHA_LIST") RS.MoveFirst Do Until RS.EOF mySQL = "SELECT * FROM Table名 WHERE KAISYA_MEI='" & RS(0) & "';" 'テンポラリクエリを作成 Set qdf = db.CreateQueryDef("Q_temp", mySQL) DoCmd.SetWarnings False '出力先エクセルファイルがすでに存在していれば削除 destFileName = "C:\" & RS(0) & ".xls" If Dir(destFileName) <> "" Then Kill destFileName 'Access2000用コード DoCmd.TransferSpreadsheet acExport, 8, "Q_temp", destFileName, True, "" db.QueryDefs.Delete "Q_temp" DoCmd.SetWarnings True Set qdf = Nothing RS.MoveNext Loop RS.Clone Set RS = Nothing db.Execute "Drop Table [T_KAISHA_LIST];" db.Close: Set db = Nothing End Sub

Plumeria035
質問者

お礼

ご教示頂いたコードを参照させて頂いた結果、実行できました!困っておりましたので、大変助かりました。本当に有り難うございました。

関連するQ&A

  • AccessからExcelへエクスポートするVBA

    いつもお世話になっております。 AccessのクエリからデータをExcelにエクスポートします。 形式はMicrosoft Excel97-2003です。 フォーム"F_全データ"にボタンを付けて、クリックするとファイル名を自分で付けて保存する。というVBAを作成したいです。 1つ目のVBAは DoCmd.OutputTo acForm, "F6_全データ", "MicrosoftExcelBiff8(*.xls)", "", False, "", 0 これだと、ファイルの種類が、Microsoft Excel5-7になってしまい困ります。 この形式になってしまうと、Excelデータを開くと、文字数が多いところが保存されていません。これだと困ります。 2つ目が DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "F_全データ", "○○○.xls" こちらですと、ファイルの種類は97-2003になりまして、問題はないのですが、ファイル名は自分で指定したいのです。 ご指導よろしくお願いします。

  • ACCESS Excelの出力について

    stressmanといいます。 実は、ACCESSでクエリをExcelへ出力をしたいのですが、 ここで、既存のExcelのファイルのセルを指定して出力 というこはできるのでしょうか? 選択クエリで必要な情報を抜き出し、そのクエリを 「営業報告書.xls」というファイルのあらかじめ記載して ある「顧客名」「住所」のセルに格納していきたいのです。 マクロで「コマンド実行」-「Excel出力」を使って みたのですが、新しくファイルを開き、クエリのデザイン そのままで出力されます。 宜しくお願いします。

  • Access2010クエリーのExcel出力書式

    Access2010で作成したクエリーをそのままの書式でEXCELに出力するVBAを組みたいと思っています。VBAは下記のとおり書いてみましたが、クエリーで表示される書式(ある列はカンマ、ある列は日付形式など)をそのまま移すことができません。このVBAをどのように変更したら、クエリーそのままの書式で出力できますでしょうか? '''''QUERYを指定 Dim varQE1 As Variant varQE1 = "QE1_List" 'QUERY名 '''''日付つきファイル名を指定 Dim varExcelPass As Variant varExcelPass = "C:\List_" & Format(Now(), "yyyymmdd") & ".xls" '''''ファイル変換出力 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, varQE1, varExcelPass, True

  • アクセスからエクセルのテンプレートへの出力

    お世話になっております。 アクセス(クエリ)から テンプレートファイル(エクセル)へ ユーザー単位で出力するには どのようにすれば良いでしょうか? QRY_出力: ユーザー名|ユーザーID|商品|単価|数量|日付 という表示クエリがあり、 このクエリから ユーザー名毎(もしくはユーザーID毎)に テンプレートファイル(エクセル)の「出力Sheet」へ出力した上で、 [ユーザー名]_出力日.xlsx という名前で別名保存したいです。 ※商品×1のユーザーは1レコード  商品×2のユーザーは2レコード・・・の出力のイメージです。 初心者につき、つたない説明かもしれませんが、 ご教示のほどよろしくお願い致します。

  • Excel97VBA

    Excel97のVBAでマクロを作っています。 1.xlsというファイルを、2.prn(スペース区切りテキスト)で保存し、再度1.xlsというファイルで元のファイルに上書き保存したいのですが、1というファイル名を任意に変更したいので、保存形式とファイル名を元のファイルと同じにして元のファイルに上書きする、ということは可能でしょうか?

  • accessからExcelテンプレートへの出力

    お世話になります。 accessのクエリ内データをテンプレExcel内の指定セルに出力したいです。accessVBAで以下の流れで作成したく。 ①accessでクエリ抽出(複数レコードに顧客ID、所属、売上げ額) ②テンプレExcel内の顧客ID、所属、売上げ額をそれぞれのセルに入力 ③1人分が出来たら、ファイル名「顧客ID+"売上表".xlsx」で保存先「フォルダA」へ保存したい。 ④同様にクエリ内の他の対象者もExcelファイル作成し、「フォルダA」へ蓄積したい。 ⑤可能であれば、「フォルダA」内のファイルをメールで一括送信したく、ファイルパス名リストも別エクセルに出力したい。 説明が拙い部分もあるかと思いますが、何卒お力をお貸しいただけないでしょうか。

  • 【ACCESS】 VBA

    accessのVBAからエクセルファイルを参照する仕組みを作成しています。 エクセルファイルのシート名は数字になっており 下記のように記述するとエラーとなります。対応方法を教えてください。 STR_sheetは1 Set Xls_sheet = Xls_book.Worksheets(STR_sheet) こうしてみてもダメ Set Xls_sheet = Xls_book.Worksheets(Format(STR_sheet)) ちなみに、エクセルのシート名は変更不可です。

  • AccessのフォームをExcelに出力

    いつもお世話になっております。 現在、Access2003でDBを作成中です。 "テーブル1"をパラメータクエリで抽出します。"クエリ1"。 そのクエリを基にフォームを作成しています。"フォーム1"。これは抽出して印刷したり、Excelに出力するために作成しました。レポートではなく、フォームにした理由は、コマンドボタン等を配置できることからです。 Excelに出力する際のVBAでつまづいてしまいました。 DoCmd.OutputTo acOutputForm, "フォーム1", acSpreadsheetTypeExcel9 これで問題なく出力できています。が、、、 Access2007の一部のPCでこれを実行するとエラーが出ます。 原因は"OutputTo"が含まれているとエラーになるようです。 ちなみにエラーは「現在出力しようとしているオブジェクトの形式は無効です。」 「2007 Office スイート Service Pack 2」こちらをインストールすると良いそうなのですが、だめでした。 WindowsXP、Office2007はこのVBAだとエラーになります。 WindowsVista、Office2007は正常に使えました。 PCの何か設定?と考えたりもしたのですが、はっきりとした原因がわからないのでは、他の人にDBを使っていただけないので、エラーにならないVBAでいきたいです。 もうひとつ、 mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "フォーム1", mFileName こちらのVBAはクエリの出力だとうまくいくのですが、フォームだとだめでした。 クエリから抽出して保存すれば良いのですが、理想はこの形です。 1.フォーム1を開くと「担当者を入力」とパラメータクエリが働き、抽出結果をフォーム1に表示される。 2.[出力]ボタンを押すと、ダイアログボックスが開いてファイル名を指定して保存する。または、ダイアログボックスが開かなくても名前を指定できれば良いです。最悪、指定できなくても良いですが、原因となる、"OutputTo"を避けたVBAでいきたい。 3.mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "クエリ1", mFileName これだと、1.でパラメータクエリで抽出結果をフォームに表示させて、2.で[出力]ボタンを押すと、また、パラメータクエリで抽出しなければならなくなるのでできれば避けたいです。 こちらの条件でご教授お願い致します。 また、WindowsXP、Office2007でエラーが出ましたので、これを解決する方法でも良いです。 よろしくお願い致します。

  • エクセルのVBAについて

    エクセルのVBAについて教えて下さい。 エクセルのVBAでプログラムを組んでいるのですが、一つわからないことがあるのです。 マクロが実行(オープン)されるファイル名(ファイルパス)をVBAで取得するためにはどうすればいいでしょうか? たとえば、マクロが実行されるファイルがC:\テスト.xlsならば "C:\テスト.xls"を取得したいと考えています。 どなたかご教授お願い致します。 宜しくお願い致します。

  • ACCESS 2000でのExcel出力

    ACCESS 2000でExcel出力時に下記のソースで出力しています。 出力先をユーザーに選択させたい(Windowsでファイル保存時に出てくるやつみたいに)のですが、どのような方法がありますか? Private Sub 集計結果_Click() DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, _ "クエリA", "c:\集計.xls" End Sub 宜しくお願いします。