none
Access2010(VBA) ランタイムモードでテーブル名、フォーム名、レポート名が変更されない RRS feed

  • 質問

  • 初投稿です。

    Access2010のVBAでテーブル名、フォーム名、レポート名を変更するプログラムを組みました。
    (Access2003でも動くようにするため.xlsで作成しています)

    DoCmd.Rename "NewTableName", acTable, "OldTableName"
    DoCmd.Rename "NewFormName", acForm, "OldFormName"
    DoCmd.Rename "NewReportName", acReport, "OldReportName"

    といった感じです。

    しかし、ランタイムモードで実行するとフォーム名やレポート名は変更されませんでした。(エラーで終了することもなく)
    通常のAccessでの起動では、DoCmd.Renameメソッドはうまく動きました。

    しかたがないので、DoCmd.Renameメソッドを使用しない方法で対応しようと試みました。
    ・テーブル名変更についてはDoCmd.RenameをやめてDAOのTableDefオブジェクトに変えることで対応できました。
    ・フォームやレポートも同様にCurrentProject.AllFormsやAllReportsより特定のフォームやレポートのオブジェクトを取得してNameプロパティの値を変更しようとしましたが、値取得のみのプロパティでしたので実現できませんでした。

    何かよい方法はないものでしょうか?また、ランタイムモードで動かない理由はわかりますでしょうか。

    2013年10月4日 12:36

すべての返信

  • MukkuMukuです。

    Access オブジェクトの編集や作成などを抑止しAccess アプリケーションの実行のみ提供するのがRuntime環境で、製品版上でのそのエミュレーションになっているのがRuntime modeです。
    なので、やろうとしていることには制限が出るでしょうね。

    2013年10月6日 23:25
  • 検索してみました。やはり、Renameは無理なようで、そのフォームを名前を付けてコピーし、元のフォームを消すということで逃げていました。

    (参考)
    DoCmd.Rename does not work in Runtime
    http://www.access-programmers.co.uk/forums/showthread.php?t=250708


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2013年10月7日 0:29
    モデレータ