- ベストアンサー
別のExcelファイルへ一つのシート(VBEditor付き)だけ移動したいのですが・・・
Excelで別のファイルへ一つのシートを移動するのはできたのですが、そのシートでVisual Basic Editorを作成した状態で移動させると別のExcelファイルでそのシートのVisual Basic Editorがコピーされていませんでした。 どのようにすればVisual Basic Editorの中身ごとシートを移動できるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >最終的には10人がそれぞれ作成した画面を一つのExcelファイルで全ての画面が見られるように統一して完成させることが目的です。 これは、私は、経験ありません。ただ、一応は、どういうものかは知っているつもりです。ご質問のレベルとおやりなっているレベルが、あまりにも差がありすぎるように思います。チームでのExcelのVBAの作成は、お互いのルールとコンセンサスを作っておかないと出来ません。 それと、誰か一人スキルの上の人がいれば、同じものを作らないで済みます。Excelでは、特に、シートモジュール以外のものは、ほとんど、共有化させたプログラムにします。つまり、表面的には問題は見えませんが、VBAは、特に、同じこと同じ繰り返しのコードをひじょうに嫌うものだと考えてよいと思います。 VBのみの部分もありますが、以下は、チームで作る時のとても参考になります。 http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9807/business/ 失敗しないビジネス開発のために >シートとフォームは全く別物なのでしょうか? VBAの扱いとしては、シートモジュールもフォームモジュールも同じブックの中ですが、ユーザーフォームは、もう1つのブックとしてみても良いぐらい、独立しているように感じています。(ただし、これは、私の感覚的なものです。シートというのは、ひじょうに複合的な部分を持っていますが、ユーザーフォームは機能重視だからです。)
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >この書き込んだユーザーフォームを別ファイルにシートごと送りたいのですが…。 最初から正確な目的を書かれたほうが良かったと思います。私は、同様の質問でいろんなバリエーションにであったことがありますので、何か、他に問題が残っているような気がしてしまいます。 もしかしたら、アドインを用いないで、多数のブックに同じものを置きたいというわけではありませんか?もし、そういう目的ですと、まったく違う内容になります。 当面の回答だけしておきます。 そこは、ユーザーフォーム・モジュールといいますが、プロジェクト・エクスプローラで、 該当するモジュールを選択し、右クリック ファイルのエクスポートで、適当な名前を付けます。 新しいブックで、プロジェクト・エクスプローラの任意の場所で、右クリック-ファイルのインポートで先ほど保存してファイル名を選択すれば、ユーザーフォーム全体が入ります。 なお、シートモジュールは、ブック全体の中では、ちょうど、ユーザーフォーム・モジュールと同じように、単独オブジェクトの下に位置したものですから、シートモジュールは、基本的に、スコープ(有効範囲)は、そのモジュールのみで、そのシートのみに機能したものですし、また、そうでないとエラーの発生の元になることがあります。これは、ユーザーフォーム・モジュールでも同様です。
補足
補足不足で申し訳ありません。10人くらいで分担して各パソコンでVB-Editorを使いボタンやラジオボタンのついた簡単な画面を作成します。 最終的には10人がそれぞれ作成した画面を一つのExcelファイルで全ての画面が見られるように統一して完成させることが目的です。 シートとフォームは全く別物なのでしょうか?
- anmochi
- ベストアンサー率65% (1332/2045)
VBEditorで作成したVBAのプログラムは 1.シートモジュール 2.ブックモジュール (ブック=一エクセルファイル) 3.標準モジュール 4.クラスモジュール に分類される。このうち、シートを別のブックにコピーや移動を行った際に、一緒に持っていかれるモジュールは1番のシートモジュールのみだ。 VBEditorで、「ThisWorkbook」や標準モジュール、クラスモジュールに書かれてある関数は移動できない。シートモジュールにしてあげよう。
お礼
ありがとうございました。
補足
シートモジュールにするとはどういうことなのでしょうか? VB/Editorで該当するシートを右クリックして挿入からユーザーフォームを選択してテキストを書き込んだりボタンを作成したりするフォームがあります。ここの選択肢は他にクラスモジュール、標準モジュールの3つだけでした。この書き込んだユーザーフォームを別ファイルにシートごと送りたいのですが…。
お礼
まだVBとVBAの意味も違いもわからないくらいの初心者です。年末までにはしっかり勉強して回答者様のコメントを理解できるようにします。ありがとうございました。