• ベストアンサー

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になりまして、問題はないのですが、ファイル名は自分で指定したいのです。 ご指導よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

単純な方法だと mFileName = InputBox("ファイル名を入力してください") にして DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "F_全データ",mFileName にしておけば良いと思います。 後は「ファイルの保存ダイアログ」を開いてファイル名を取得するという方法も 取れますね。 Access VBA: ファイルを開く、名前を付けて保存ダイアログボックスを表示するサンプル http://billyboy.blog81.fc2.com/blog-entry-53.html

usatti
質問者

お礼

大変参考になりました。ありがとうございます。解決できました!

その他の回答 (1)

  • yu_tang
  • ベストアンサー率81% (26/32)
回答No.2

DoCmd.OutputTo acOutputForm, "F6_全データ", acSpreadsheetTypeExcel9

参考URL:
http://accessblog.net/2008/10/export-to-excel-there-are-too-many-rows.html
usatti
質問者

お礼

大変参考になりました。ありがとうございます。解決できました!

関連するQ&A

  • OutputToメソッド エクセルに出力

    DoCmd.OutputTo acForm, "データシート", acFormatXLS とした時に、ファイルの種類が 「Microsoft Excel 5-7(*.xls)」 になってしまいます。 私が使っているヴァージョンは2003なので 「Microsoft Excel 97-2003(*.xls)」 にしたいのですが どうすればいいでしょうか? ご教授よろしくお願いします。

  • アクセス(access)からエクセルにエクスポート

    アクセスから、エクセルにクエリのデータを出力する際に、 「TransferSpreadsheet」を使用していますが、 そのエラー処理について、教えて下さい。 保存しようとしているファイルが既に開かれている場合に、 処理を中止し、エラーメッセージを出したいのですが、 どのようにすればいいのでしょうか? なお、現在のVBAは次のとおりです。 Private Sub コマンド01_Click() Dim a As String Dim b As Variant a = "Q_一覧表" b = "C:\一覧表.xls" DoCmd.TransferSpreadsheet acExport, _ acSpreadsheetTypeExcel9, a, b, True MsgBox "データを出力しました。" Exit Sub End Sub

  • accessからエクセルにエクスポートしたファイルを開きたい。

    accessのマクロ・ワークシート変換で4枚のシートを含むエクセルファイルを作るように設定をしたのですが、これをエクスポートが終わったら自動的に開くようにしたいのですが、どのようにしたらよいでしょうか。 VBAで DoCmd.OutputTo acOutputTable, "tbl_aaa", acFormatXLS, , True と試してみましたが、シートは一つのみになってしまいます。 1つのエクセルファイルに4枚のシートを出力して、それを立ち上がるようにしたいです。 DoCmd.TransferSpreadsheet acExport, … も考えたのですが、エクセルを開く書き方がわかりません。 よろしくお願いします。

  • ACCESSのテーブルをEXCELにエクスポート

    お世話になります。 ACCESS2000を使っています。 テーブルをACCESSの入っているフォルダーにエクスポート出来ますか? ACCESSはUSBフラッシュメモリーの会計フォルダーに保存しています。 使用PCを変えるとデバイス記号がかわります。 コーディングは下記の通りです。 DoCmd.TransferSpreadsheet acExport,acSpreadsheetTypeExcel5, "XLS利用実績", "K:\会計\利用実績.xls"

  • ACCESS 2000でのExcel出力

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

  • MSアクセス エクセルへのエクスポートについて

    アクセスの初心者です。いろいろ調べてみたのですがわかりません。どうか教えてください。よろしくお願いします。 アクセスのフォームにボタンを作り、そのボタンを押すとエクセルにエクスポートするように設定しました。しかしデータが全てエクスポートされてしまいます。目指しているのは”開いているフォームのデータのみをエクスポートしたい”のです。 フォーム名:申込書 エクスポートしたいフォームのデータ(クエリ)名:申込書 エクスポート先:エクセルc:¥申込書 です。 主キー:申込ID 仮にフォームで申込IDが「3」を開いていれば、その「3」のデータのみをエクスポートするVBAを教えてください。 現在はここまでの段階で止まっています。↓これにプラスする記述で目指すものができればと思います。 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "申込書", "c:\申込書.xls", True, "" お手数ですがよろしくお願いします。

  • 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でエラーが出ましたので、これを解決する方法でも良いです。 よろしくお願い致します。

  • Excelファイル 修復不可能

    Excel側からAccessモジュールを呼び出してExcelへクエリ結果をエクスポートしてますが、そのエクスポートされたファイルをオープンすると頻繁に(5回に1回くらい)「修復不可能」と言う、あのダイアログでメッセージが出ます。同じ条件のDATAでも毎回では無く、普通に成功する時もあります。一連の操作を全てExcel側からvbで行っているので、失敗したり、成功したりで安定せずに困っています。解決方法はあるでしょうか?DATA量はそんなにありません、Sheet数は4Sheetです。 Access側のモジュール varAccess1 = "Q_内容分類集計" varAccess2 = "Q_新旧集計" varAccess3 = "Q_業種別集計" varAccess4 = "Q_業種別新旧集計" varExcelPass1 = "\\Cs0097\63022_cr\顧客対応システム\発表資料取込用.xls" strmsg = "実績を、Excelファイルへ出力します。" & Chr(13) & _ "よろしければ、OKをクリックして下さい。" If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferSpreadsheet acExport, _ acSpreadsheetTypeExcel9, varAccess1, varExcelPass1, True DoCmd.TransferSpreadsheet acExport, _ acSpreadsheetTypeExcel9, varAccess2, varExcelPass1, True DoCmd.TransferSpreadsheet acExport, _ acSpreadsheetTypeExcel9, varAccess3, varExcelPass1, True DoCmd.TransferSpreadsheet acExport, _ acSpreadsheetTypeExcel9, varAccess4, varExcelPass1, True MsgBox """データ出力は、正常に完了しました。""" End If Exit Sub

  • エクセルへのエクスポート

    ACCESS 2003 の VBA で下記の命令を実行してエクセルファイルをエクスポートします。 (環境はSQLserver2008、XP+ACCESS2003+EXCEL2003) DoCmd.OutputTo acOutputStoredProcedure, "テーブル名", acFormatXLS, "C:\ACCESS\テーブル名.xls" (1) 日付型(datetime)のフィールドの表示が「20-Dec-09」となってしまいます。 最初から「2009/11/20」と云う型でエクスポートできないのでしょうか? (2) エクスポートされたファイルを開いて保存するときに 「Excel 5.0/95 ブックです。最新の Excel のファイル形式に更新しますか?」 と表示されます。 (VISTA+Access2003+Excel2007は表示されません) 最初から2003のファイル形式でエクスポートする方法はありませんか?

  • アクセス2007 エクセルへエクスポートするファイル名に日付を付けたい

    こんにちは。 アクセス2007を使用しています。 テーブルをエクセルにエクスポートし、 さらにそのファイル名に日付をつけたいのですが なかなかうまくいきません。 以下のように記述しました。 Private Sub コマンドボタン_Click() 'Excelファイルへエクスポート DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "テーブル名", "転送先フォルダパス" & Format(Now(), "yyyymmdd") & ".xls" End Sub Format関数を入れないとうまく行くので その部分が間違っているのだろうと思うのですが どうしていいのかわかりません。 どなたか原因をご教授いただけると助かります。 よろしくお願いいたします。