- ベストアンサー
ExcelVBA ユーザーフォームのコードがない
- Excel vbaで質問させてください。あるExcelブック(test.xlsとします)を開くと、ユーザーフォーム(と思う)が表示されます。ユーザーフォームで日付を選び、「これでOK」ボタンをクリックすると新規ブックとして「text_0614.xls」が出来て、これが表示ブックとなります。
- vbaコードの修正がしたくて、VBEから作業しようとしたところユーザーフォームモジュールも、標準モジュールも何も見当たりません。Thisworkbookのイベントも何も書いてありません。プロジェクトウィンドウに、「フォーム」というフォルダは表示されると思いますし、また、ダブルクリックしてもパスワードを求められることがありませんのでパスワードがかかっているようには見えません。
- これはExcelVBAのユーザーフォームじゃないのでしょうか?(VB?)または、もし、この「フォーム」フォルダごと、ユーザーに見せないやり方があるのでしょうか?WinXP SP3 Excel2003 SP3 使用です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>>新規ブックとして「text_0614.xls」が出来て、これが表示ブックとなります。 (元のtest.xlsは閉じられています)<< 本当にそうなら、新規ブックに名前がついているだけだから それを開いたってコードがあるはずはありません。 *作者がコードの編集をされたくなくてそうしているブックなのでは?
その他の回答 (4)
- keithin
- ベストアンサー率66% (5278/7941)
あまりに基本過ぎて誰も指摘しなかったという顛末になりそうですが,「ないない」って一体どこを探していたんですか?という事ですね。 マクロを持っているのはtest.xlsですから,当然ながら添付図のようにそいつを開いて確認しないとイミナイです。 で,プロジェクトがロックされていてパスワード入れないと開かないなら,それで決まりですね。 やっぱりtext_0614.xlsにマクロがないから無い無い言ってたって事ですか?
お礼
環境をつくり、図まで添付してくださりありがとうございました。
補足
よく考えてみましたらそのようでした・・・すみません。 text_0614.xlsが開いている時は、test.xlsは閉じていますので 添付してくださった図で言えば赤枠線内は無い状態です。 バカな質問にお付き合いくださり、本当にありがとうございました。 お騒がせして申し訳ありませんでした・・・。
- merlionXX
- ベストアンサー率48% (1930/4007)
ひょっとしてダイアローグシートじゃないですか? 標準モジュールで MsgBox DialogSheets(1).Name を実行したら何と出ますか?
お礼
色々と考えてくださりありがとうございました! ダイアログシートというのは初めて聞きました。 そういったものがあるのかと勉強になりました。 自分でも調べてみます。
補足
回答をどうもありがとうございます。 ANo.3さんのところにも書かせて頂きましたが ただ単にパスワードでロックされていただけかもしれません・・・。 モジュールがロックされているので 回答いただいたダイアログシートのNameは実行できませんでした・・・。 お騒がせして申し訳ありません!
- keithin
- ベストアンサー率66% (5278/7941)
それでは,なんとなくですが(失礼な意見でゴメンナサイ)やっぱり違う場所(たとえば間違ったProjectの中)を探してたりするんじゃないかな?という気もします。 test.xlsを起動してから一連のマクロが実行中に,ESCキーを乱打して(あるいは押しっぱなしにして)上手い具合にマクロ実行中にブレイク出来ないか,やってみたらどうでしょう。フォームが出る瞬間,或いは消える瞬間が狙い目かも知れません。 実行中のマクロを中断できれば,そこからデバッグしてそれがどこにあるのか何に含まれているのかも見ることが出来ます。 #まぁESCを効かなくされていたらダメですが。
補足
何度もありがとうございます。 なんだか自分が勘違いしているような気がしてきました・・・。 皆さんに色々考えていただいたのに申し訳ありません・・・。 新しいブックを作成する時にシートをコピーして作成することも可能ですし DreamyCatさんの言うとおり、「test_0614.xls」が作成される時に コードは持ってきてないのかもしれません。 と言うのはtest.xlsで表示されるユーザーフォームを、閉じるボタンで 閉じてみたところ、プロジェクトパスワードが求められました(><) ただ単にパスワードでロックされていただけって事でしょうか!
- keithin
- ベストアンサー率66% (5278/7941)
それが古いブック(アプリケーション)だった場合。 もしかすると5.0ダイアログと4.0マクロの組み合わせかも?しれませんね。 試しに書式メニューのシートの再表示で,何やら隠れていないか探ってみてください。
補足
早速回答ありがとうございます! Excel側で、シートの再表示メニューはグレーアウトしています・・・。 念のため、標準モジュールで以下を試してみましたが あらたに表示されたシートはありませんでした・・・(´`) For Each sh In Sheets sh.Visible = True Next sh 5.0ダイアログと4.0マクロなどは、シートに記述するのですか? 古いマクロは全く知識がなく見方さえもわからないので・・・。
お礼
すみません、補足の補足、の入れ方が分からなかったので こちらに入力させて頂きますね。 ”新規ブックとして「text_0614.xls」が出来て” と書いてしまいましたが、新規ブックとは違いますね、 分かりづらい表現をしてしまい、大変失礼しました!
補足
早速回答くださりありがとうございます! コードが見当たらないのは、もとのtest.xlsの方なのです・・。 新しく表示された「text_0614.xls」は元のtest.xlsと同じ シート内容となっていまして、多分、test.xlsから Saveasで名前を付けて保存されたものえはないかと思っています。 また、保存先は「201106」というフォルダになり、 このフォルダは存在しなければ自動生成されますので、 やはりtest.xlsに何らかのMkDirによる指示があるものではないか? と思うのですが・・・。