• ベストアンサー

マクロが使えなくなります。

苦労して検索マクロを作り原本として保存しましたが、書き込み用に「名前を付けて保存」や「シートのコピー-新しいブック」として渡そうと思ったらマクロが全く使用できませんでした。 マクロも一緒にコピーや保存する方法はありませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • diashun
  • ベストアンサー率38% (94/244)
回答No.2

diashunです。 #1の方のセキュリティも考えられますが、シートのコピー→新しいブックで保存よりも、VBE画面で「ファイルのエクスポート」で、作成したマクロを標準モジュール(拡張子「bas」)で保存するのも方法の一つです。 Sheetモジュールやフォームモジュール(xxxxxx.frm)に作成したプロシージャなどは、標準モジュールで動作するように書き写して、標準モジュール(xxxxxx.bas)で保存しておけば、ほかでも使えます。 的違いのアンサーであればお許しを・・・。 また、上記の詳しい説明が必要であれば、補足を・・・。

noname#113614
質問者

お礼

ご回答ありがとうございます。 >標準モジュール(xxxxxx.bas)で保存しておけば、ほかでも使えます。 マクロの保存の仕方で変わるのですね。 今日明日は手元にファイルがないので、月曜日早速試してみます。 出来れば誰でも原本をコピーして使えるようにしたいので、また教えて下さい!

noname#113614
質問者

補足

今日試してみるとシートのコピーではマクロまでコピー出来ませんでしたが、名前を付けて保存で出来ました!ありがとうございました。コマンドボタンを作った時にそのままSheetモジュールにマクロを書いていたので、標準モジュールに写しました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 bas ファイルは、標準モジュールのコードのバックアップのテキストファイルであって、ソースとしてコードを渡すために行うものだと思います。 しかし、ローカルモジュールに書いたものは、エクスポート・インポートをすれば、clsファイルになり、インポート後は、クラス・モジュールになってしまいますから、クラスのオブジェクトを呼び出すならともかく、コピー&ペーストをして元に戻す作業が必要になります。この辺りは、VB6と挙動が違います。 通常は、VBAでは、簡単にコードを渡すのは、ブックを二つ開いておいて、各モジュールレベルで、ソースのコピー&ペーストを行い、次のブックに渡します。 シートコピーでもコードは渡りますが、それは、シートに書いたものに限ります。標準モジュール等は、ブック自体をSaveAs で複製を作らなければ、別のブックにはコピーされません。 テンプレートにしてあれば、原本から、個別のブックにもコードが入ります。 それ以外は、アドインを使えば、共通して、マクロが使えるようにはなりますが、少し技術が必要になります。

noname#113614
質問者

お礼

ご回答ありがとうございます。申し訳ありませんが、私には少し難しすぎです(> <) そして他の人が原本をコピーして使う際に >簡単にコードを渡すのは、ブックを二つ開いておいて、各モジュールレベルで、ソースのコピー&ペーストを行い、次のブックに渡します。 毎回この作業をしてもらうことも難しいかと思います。他の方法を考えてみます。ありがとうございました。

すると、全ての回答が全文表示されます。
noname#79209
noname#79209
回答No.1

> マクロが全く使用できませんでした。 エクセルファイルのセキュリティーレベルが高すぎて、 マクロが動かせないレベルになっているのでは?

noname#113614
質問者

お礼

ご回答ありがとうございます。 セキュリティーレベルは変えていないので、あまり関係ないと思います。 原本にはコマンドボタンでマクロが実行されるようにしているのですが、「名前を付けて保存」や「シートのコピー-新しいブック」として新しいファイルを作るとボタンの中身が空になってしまい、マクロがコピーされていません。説明不足ですみません。

すると、全ての回答が全文表示されます。

関連するQ&A