
いつもお世話になっております。
現在、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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AccessでIDを入力したら他の項...
-
ACCESSでVBAから選択クエリの抽...
-
AccessのフォームをExcelに出力
-
ACCESSで、EXCELのような、sumi...
-
アクセス2003のカレンダー...
-
Accessの使い方
-
アクセス2007 フォームフィル...
-
ADOレコードセットのコピー
-
(続き)accessでの2段階クエリの...
-
アクセス2007 フォームでフィ...
-
ACCESS_検索
-
フォームからクエリの抽出期間...
-
access2000でデータの抽出をす...
-
クエリーの結果をフォームに表...
-
Accessクエリの抽出条件にフォ...
-
ACCESSのフォームでボタンを押...
-
Accessで月ごとのレポートを出...
-
VarChar型をINT型に変換するには
-
ACCESS2003のグループ化のエラ...
-
エクセルで、抽出したデータだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSでVBAから選択クエリの抽...
-
AccessでIDを入力したら他の項...
-
クエリ実行結果0件の場合のフ...
-
ACCESSで、EXCELのような、sumi...
-
ACCESS2007 マクロ クエリのパ...
-
Accessでフィルタの実行アクシ...
-
Access 抽出したフォームをフ...
-
ACCESS2003のグループ化のエラ...
-
アクセスのフォームに連番を表...
-
フォーム上でレコードを抽出し...
-
access クエリでIIF文で抽出条...
-
AccessでログインIDを抽出条件...
-
ACCESSで、フォームで抽出した...
-
フォームからクエリの抽出期間...
-
Access 抽出したデーターの詳細...
-
ACCESSあいまい検索から入力まで
-
アクセス2003のカレンダー...
-
クエリーの結果をフォームに表...
-
ADOレコードセットのコピー
-
ACCESS2000 抽出されたレコー...
おすすめ情報