- ベストアンサー
VBAでコードから新規フォームを作成する際にコードが見えてしまう
- VBAで新規フォームを作成する際に、コードが見えてしまう問題について解決方法を教えてください。
- フォーム作成時にコードが表示される問題を解決する方法を教えてください。
- VBAのコードの一部を抜粋して新規フォームを作成する際に、コードが表示される問題について解決方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>'新規フォーム作成 >Set myFrm = CreateForm この処理の時点ですでにフォームオブジェクト自体は作成されていると思いますが、この直後にデザインで開く分には問題ないと思うのですが。 また、新規フォームを作成するにあたりコード類もペースとされておられると思いますが、 myMdl.AddFromFile "ファイル名" 等を用いて一括入力されると処理が簡素化されませんか? (既知であられましたらご容赦を)
その他の回答 (3)
- keikan
- ベストアンサー率42% (75/176)
>myMdl.AddFromFile "ファイル名" のファイル名の中にはどの様なコードを記述すればいいんですか?コマンドのクリックイベントみたいなイベントものを入れるんですか? フォーム完成した時点必要な最終的なコードをすべて書いておきます。(完成させたフォームのモジュールの中身をコピーアンドペーストでテキストファイルにコピーしてみましょう) そのファイルに記述されたコードがコードモジュールのシステム宣言のすぐあとに挿入されるはずです。 フォーム作成→すべてのアイテムを追加→コードを一括で貼り付け みたいな感じになると思います。 ただ、テキストファイルでおいておくとコードを覗かれてしまうので、どこかの時点で内部的に持っておいたコードをテキストファイルに書き出すか、あらかじめコードを暗号化して使用時にテキストファイルを生成するかしないとコードをあとで見られてしまうので注意が必要。 また、生成したテキストファイルの削除もお忘れなく。
お礼
なるほどわかりました。 でもコマンドボタンを不特定多数作らなければならず、その数はレコード数によって変わって来るので、コマンドがいくつできるかなんてわかりません。 だからコードをあらかじめコマンドの数だけ用意しておかなければならないその方法は無理ですよね?クリックイベントの内容は同じなのですが・・・
- keikan
- ベストアンサー率42% (75/176)
DoCmd.OpenForm myFrm.Name, acDesign, , , , acHidden モジュールを追加する等の操作をする前に一度隠してしまうのはだめですか?^^ myFrmは設問上のmyFrmですので、呼び出したあとのフォームになるはずです。
補足
問題となっているのは新規フォームを作成する過程でコードが見えてしまうことなので、フォーム作成イベントが終了するまでは、フォーム自体がまだできていないのでフォームを開く処理は使えません。 既に開いているフォームのコマンドボタン押下でフォーム作成イベントを発生させて、新規フォームが完成すると呼び出し側のフォームを閉じています。
- keikan
- ベストアンサー率42% (75/176)
myFrm.visibile = false で、隠れていませんか?^^
お礼
やってみましたが隠れてないみたいです。 myFrmのフォームは新規フォーム作成中のフォームでいいんですか? それとも新規フォーム作成する関数を呼び出し側のフォームでいいんですか?
お礼
Set myFrm = CreateForm のすぐ下に DoCmd.OpenForm myFrm.Name, acDesign, , , , acHidden とやってみましたが何も変わりませんでした。 確かに一時的にフォームが隠れたかもしれませんがコード(新規フォーム作成コーディング)までは隠れてなかったみたいです。 新規フォームでは不特定多数のコマンドボタンを作成しており、そのコマンドボタン一つ一つにイベント処理コードを埋め込んでいるので、その埋め込んでいる途中経過がどうしても出てしまうんですね。 おそらくラベルだけを貼り付ける新規フォームなら、コードを埋め込む必要は無かったので、ここまで問題にはならなかったと思いますが、今回の場合新規作成フォームのコーディング処理まで埋め込まないといけないことがネックになっていることがわかりました。 フォームが見える見えないの処理方法の問題ではなく、コーディング作成経過処理を見せない方法が本当の問題だということにようやく気づきました。 やはりこれを解決する方法なんてないですよね。 >myMdl.AddFromFile "ファイル名" のファイル名の中にはどの様なコードを記述すればいいんですか?コマンドのクリックイベントみたいなイベントものを入れるんですか?
補足
訂正 Set myFrm = CreateForm DoCmd.Save , "フォーム名" 'の下にデザインビューで開く DoCmd.OpenForm myFrm.Name, acDesign, , , , acHidden Set myMdl = myFrm.Module <これ以下はラベルとコマンドボタンの配置のコード> DoCmd.OpenForm myFrm.Name 'そして最後にフォームビューで開いています。 です。DoCmd.Save , "フォーム名"を入れておかないとフォーム名を自分で決めれないので入れてます。 Set myMdl = myFrm.Module以下のコードは全てファイルに記述できるんでしょうか?