次の方法で共有

C#からAccessランタイム版でレポート出力時エラー

Anonymous
2013-08-29T07:55:31+00:00

C#のWindowsアプリから、AccessのレポートをExcel出力するmdbを起動しています。

この度、Access2003から2010(SP2)にアップグレードし、mdbファイルをaccdbファイルに変換しました。

通常の実行であれば正常に処理されますが、ランタイム版で実行するとエラーが発生します。

1.C#からAccessを起動します。

    Process.Start(@"C:\Temp\Test2010.accdb", "/runtime");

2.autoexecマクロにて、標準モジュールのFunction(OutputRpt)を実行、Accessを終了します。

3.OutputRpt()は、AccessのレポートをExcel出力します。

    DoCmd.OutputTo acOutputReport, "R_TEST", acFormatXLS, "c:\Temp\TEST.xls"

エラーは、3.のExcel出力の部分で発生し、

  Err.Number=2046 Err.Description=コマンドまたはアクション '出力' は無効です

という内容です。

http://oshiete.goo.ne.jp/qa/1955046.html

http://oshiete.goo.ne.jp/qa/6917336.html

を参考に、コンパイルを実行しましたが、Option Explicitの宣言もしており、コンパイルエラーはありません。

どなたか、お知恵を貸してください。

よろしくお願いいたします。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

3 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2013-09-04T03:17:36+00:00

    kyoko_br さん、こんにちは。

    試した結果などの書き込み、ありがとうございます。

    accdb ファイルをランタイムモードで開いた時の現象だったんですね。

    手元の PC (Access 2010) で試したところ、同じメッセージ 「2046:コマンドまたはアクション ‘出力’ は無効です」 が出ました。

    拡張子を accdr に変更して、ダブルクリックで開いても同じでした。

    参考ページ : Access 2010 ファイル形式の概要

    調べた範囲では、この動作について説明している情報を、見つけることはできませんでした。。。

    フォームから処理を実行する方法で、この現象を回避していただけたらと思います。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2013-08-30T07:01:40+00:00

    楠部 啓様

    ありがとうございます。

    Accessのバージョンは 2010 です。

    ランタイム版をインストールしているのではなく、通常版です。

    また、SP2も適用済みです。

    そのため、ダブルクリックすると、通常版の起動となりますので、

    コマンドラインより、

    Test2010.accdb /runtime

    と入力して起動しましたら、Err.Number=2046 が発生します。


    > ・ “TEST.xls” ファイルの出力先を変えるとどのようになるか

    現在は、C:\Tempの配下に出力しますが、将来的には顧客の任意のフォルダに変更する予定です。

    ちなみに、マイドキュメント(C:\Users\aaaaa\Documents)配下にしてみたり、

    C:\直下にしたりしても、結果は同じでした。


    > ・ レポート “R_TEST” を開いた状態で出力を実行する処理に変更すると、どのようになるか

    ランタイム版では、フォームなどを置いていないと、何も出てこないので、

    新しく検証用にフォームを作成しました。

    出力ボタンを配置し、標準モジュールのOutputRpt()を呼び出します。

    実行した結果、フォームに配置したボタンイベントからは、ランタイム版でも、出力できました。

    × autoexecマクロ→標準モジュール→XLS出力

    ○ スタートアップフォーム→ボタンClickイベント→XLS出力

    何か、標準モジュールを直接起動することが悪いのでしょうか?

    これを踏まえ、

    autoexecマクロからは、プロシージャの実行ではなく、フォームを開くに変更してみました。

    フォームのOpenイベントで、OutputRpt()を実行後に、Cancel=Trueしました。

    これで、ランタイム版でも無事に、出力ができることが確認できました。

    私の問題はこれで解決ですが、本来これでよかったのか、いささか疑問が残ります。。。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2013-08-30T06:06:01+00:00

    kyoko_br さん、こんにちは。

    マイクロソフト コミュニティ への投稿ありがとうございます。

    accdb ファイルを、Access Runtime 環境で開いた時の動作についての質問ですね。

    念のため、という感じになるのですが、Access Runtime のバージョンは 2010 でいいですか?

    その前提でコメントしますね。

    Access 2010 Runtime Service Pack 2 (SP2) 未適用の場合には、インストールして動作が変わるかを確認してみてはどうでしょうか。

    Microsoft Access 2010 Runtime Service Pack 2 (32 ビット版): KB2687444

    あと、Test2010.accdb をダブルクリックして開いた時も同じエラーが出るのか、という確認もしておいてください。

    そうすることで accdb ファイルを開く方法が要因になっているのかをチェックできると思いますよ。

    これらの内容を確認しても同じエラーが続く場合には、以下の内容も確かめてください。

    ・ “TEST.xls” ファイルの出力先を変えるとどのようになるか

    ・ レポート “R_TEST” を開いた状態で出力を実行する処理に変更すると、どのようになるか

    返信、お待ちしています。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません