いつもお世話になっております。
現在、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でエラーが出ましたので、これを解決する方法でも良いです。
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
> PCの何か設定?と考えたりもしたのですが、はっきりとした原因がわからないのでは、
> 他の人にDBを使っていただけないので、エラーにならないVBAでいきたいです。
こちらのOSはWinXPのみなので、そちらでの全ての状況を確認できたわけでは
ありませんが、対処法は(多分)見つかりましたのでご報告します。
【対処方法】
現状のコードを以下のように修正します(OutputToメソッドで対応可)。
<現状>
DoCmd.OutputTo acOutputForm, "フォーム1", acSpreadsheetTypeExcel9
(「WinXP&Acc2003」で出力可、「WinXP&Acc2007」で出力不可を確認)
<修正>
DoCmd.OutputTo acOutputForm, "フォーム1", acOutputXls
(「WinXP&Acc2003」、「WinXP&Acc2007」ともに出力可を確認)
【説明】
VBE画面で「OutputTo」のところにカーソルを移動した状態でF1キーを押すと、
対応するヘルプが表示されるので確認されることをお勧めしますが、このメソッドの
第3引数(OutputFormat)には、「AcFormat」クラスの定数(→「acFormat~」で
始まる形になっています)を指定することになっています。
・・・なのにAcc2003だと、本来「TransferSpreadsheet」メソッドで使用するはずの
「AcSpreadsheetType」クラスに属するacSpreadsheetTypExcel9を指定しても、
エラーにならずに出力できてしまうようです。
一方、Acc2007では、これが厳密に適用されるようになったため、提示されたコード
では、「現在出力しようとしているオブジェクトの形式は無効です」とのエラーが発生
するようになったものと推測されます。
・・・従って、上記の修正は、「本来Acc2003のOutputToでも使用されるべき
引数の型」を指定しただけ、ということになりますので、OS・Applicationの違いに
関係なく、エラーは発生しなくなるものと思います。
(なまじAcc2003で柔軟に対応されてしまったために、Acc2007への移行で余計な
混乱を招かれてしまった、ということかと・・・(汗))
※TransferSpreadsheetメソッドの件は、元々OutputToメソッドの代替策として
検討されたものと思いますので、省略します。
(フォームの出力には対応していないので、強引にやるなら一時テーブルを
作成してデータをコピーして・・・といったことになり、煩雑ですので)
大変参考になりました。上記の方法で解決できました。
とても詳しく解説して下さり、わかりやすくて、大変助かりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) access レポート 請求書について 2 2022/07/04 22:52
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- JavaScript ソースコードは下の共有コードサイト「張り紙」にあります。 入力フォームの javascript で 1 2022/05/11 11:01
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
【選手権お題その3】この画像で一言【大喜利】
とあるワンシーンを切り取った画像。この画像で一言、お願いします!
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSでVBAから選択クエリの抽...
-
クエリ実行結果0件の場合のフ...
-
AccessのフォームをExcelに出力
-
VarChar型をINT型に変換するには
-
AccessでIDを入力したら他の項...
-
サブフォームを利用したクエリ...
-
Accessのテキストボックスとコ...
-
アクセスのパラメータクエリを...
-
Access 抽出したデーターの詳細...
-
Accessクエリの抽出条件にフォ...
-
(続き)accessでの2段階クエリの...
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
-
Accessでデータを更新したらそ...
-
Access2000、これはいったい・...
-
ACCSESS2013VBA フォームのレコ...
-
「パラメータが少なすぎます。3...
-
X-Ripperというフリーウェアに...
-
docmd.gotorecordを起動するには
-
Accessフォームで詳細内の任意...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSでVBAから選択クエリの抽...
-
AccessでIDを入力したら他の項...
-
クエリ実行結果0件の場合のフ...
-
ACCESSで、EXCELのような、sumi...
-
Accessでフィルタの実行アクシ...
-
アクセスのフォームに連番を表...
-
ACCESS2003のグループ化のエラ...
-
サブフォームを利用したクエリ...
-
VarChar型をINT型に変換するには
-
ACCESS2007 マクロ クエリのパ...
-
ACCESS フォームで抽出したデー...
-
Accessクエリの抽出条件にフォ...
-
フォームからクエリの抽出期間...
-
アクセス2007 フォームでフィ...
-
ACCESSで、フォームで抽出した...
-
Access2016埋め込みマクロでの...
-
access クエリでIIF文で抽出条...
-
ACCESS クエリのデザインビュ...
-
Accessのパラメータクエリ作成...
-
クエリーの結果をフォームに表...
おすすめ情報