ベストアンサー選定ルールの変更のお知らせ

すでにマクロが組まれているファイルを、名前をつけて別のファイルに保存するときに、
新しく保存するファイルからはマクロをはずして保存させるにはどの様にしたら良いのでしょうか。

名前をつけて保存することも、VBAで動作させます。

ファイル保存時ではなくとも、マクロをはずずVBAを教えてください。

何卒アドバイスを下さいますよう宜しくお願いいたします。

A 回答 (2件)

こちらを参考にされては?


井上治氏の
マクロを除いた配布用ブックを作成する。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
    • good
    • 0

こういう話題には、


・マクロを無効にする
・マクロコードを削除する
などがあるが、本質問は後者として
下記コードを入れるブックを決めて、その標準モジュールに
Sub test01()
Workbooks.Open "XXXX.xls"
Dim objVBCOMPO As Object
For Each objVBCOMPO In ActiveWorkbook.VBProject.VBComponents
With objVBCOMPO.CodeModule
If .CountOfLines <> 0 Then .DeleteLines 1, .CountOfLines
End With
If (objVBCOMPO.Type = vbext_ct_StdModule Or objVBCOMPO.Type = vbext_ct_MSForm) Then
ActiveWorkbook.VBProject.VBComponents.Remove objVBCOMPO
End If
Next objVBCOMPO
Set objVBCOMPO = Nothing

End Sub
これは
http://chaichan.web.infoseek.co.jp/vbtips/VBMemo …
のコードに一行加えたものである。
"XXXX.xls"は>名前をつけて別のファイルに保存した、ブックである。
ーーー
>Microsoft Visual Basic Applications Extensibility の参照設定が必要と思う。WEB記事に対しApplicationsが正しいようだ。チェックが付いてなくても動いたが、正しいかどうか不知。
ーーー
これらは自己責任でやること。コピーしたものを対照にして、良く結果を検討し、変更後の保存は慎重にするべきである。
マクロをプログラムでいじくるのは、勧められた話ではない。質問者の技量はわからないが、何かわからない場合に、こういうWEB照会も習慣として、して無いレベルの人は、やらないほうが良かろう。
コードが削除されると、普通のシートの操作などの際に、エラーが発生したりする場合も考えられるので、本来はシートの状態も含めて、中身を十分検討のうえ、手動で削除するべきでしょう。(一例でユーザー設定のボタンが作られていた場合で、OnActionで何か処理がされる場合やユーザー作成関数が在ったなどが一例)
ーー
Module1の解放などまでは上記コードではやってない。
ーーー
また
http://www.asahi-net.or.jp/~zn3y-ngi/YNxv9cz48.h …
>マクロを含むブックを別名で保存すると、当然のことながら、モジュールシートが付いた状態で保存されます。
しかし、右図のようにシートの[移動またはコピー]で[新しいブック]に[コピーを作成する]して、その新しいブックに[名前を付けて保存]すればモジュールシートは付きませんから、・・
これも試してください。
ーーー
http://www.vbalab.net/vbaqa/data/excel/log/tree_ …
にもコードがありました。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A