• ベストアンサー

Excel:VBAブック保存時にマクロをはずずには

すでにマクロが組まれているファイルを、名前をつけて別のファイルに保存するときに、 新しく保存するファイルからはマクロをはずして保存させるにはどの様にしたら良いのでしょうか。 名前をつけて保存することも、VBAで動作させます。 ファイル保存時ではなくとも、マクロをはずずVBAを教えてください。 何卒アドバイスを下さいますよう宜しくお願いいたします。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

こちらを参考にされては? 井上治氏の マクロを除いた配布用ブックを作成する。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_200.html

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

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

関連するQ&A

  • エクセルで<名前をつけて保存>するマクロに、保存時マクロを含めて保存させることは可能ですか

    エクセル、マクロとも初心者です。 (VBAはわかりません) エクセルのテンプレートファイルを開いて、必要箇所だけ入力すると、その日の日付をファイル名として、<名前を付けて保存する>ようなマクロを作りました。 このままだと、マクロも一緒に保存されてしまいますよね。 マクロを含まずに、<名前を付けて保存>させるマクロって可能ですか? できるとしたら、どうやればいいでしょうか。

  • エクセルのマクロで保存して終了が出来ない

     あるエクセルファイルにて、VBAで Sub 保存して終了() ActiveWorkbook.Save ActiveWorkbook.close End Sub  というマクロを作成したのですが、1回目は正常に動いたのですが次からは、そのマクロを動かしても画面が一瞬点滅するだけで、上書き保存も終了もしません。  それで、ファイルを別の名前をつけて保存してその、別の名前で保存したファイルで、また上のマクロを動かすと1回目は正常に動くのですが、やはり次に開くと動かなくなります。  因みに他のマクロは正常に動作し、この保存して終了させるマクロだけが変なのです。  マクロの書き方を変えて以下のようにしてもだめでした。 Workbooks("ナントカ.xls").Close savechanges:=True  やはり、何回書き方を変えても保存して終了させることだけが出来ません。普通にマクロを使用せず手動ですることは出来るのですが…。  分かりにくい説明ですみませんが、よろしくお願いします。

  • Excel2007でマクロのファイルを作ってから、立ち上げに空のブックではなく、マクロのブックが開いてしまう。

    Excel2007で、マクロやVBAを使うようになり、ファイルを保存するようになってから、毎回、Excelを立ち上げ際に空のブックが開かず、困っています。

  • マクロを含んだexcelブックの保存について

    友人が作った、マクロ込みのexcelブックがあります。 私のPCで編集・保存後友人に返送したら、マクロのコントロールボックスが消えていたり、別のユーザーフォームで消えている箇所がありました。 特定のDLLが私のパソコンに組み込まれていないから保存できないらしいのですが、それがどのDLLかがわかりません。 マクロ毎に必要なDLLを検索・抽出したりする手段はあるのでしょうか?教えてください。 よろしくお願いします。

  • VBAでフォルダ内の全ブックにマクロをかけ集計する

    VBA初心者ですが、本を読んで勉強しても分からないので質問させていただきます。 質問したいことは以下の通りです。使用するのはEXCEL2007です。 あるフォルダ内に999から1600と名前の付いたEXCELのファイルがあります。 その全てのファイルに、あらかじめ作成済みのマクロをかけそのマクロをかけたEXCELファイルのE62からH62までをコピーし、別のファイル(作成済み、名前を仮にAとします)にペーストしたいのです。 ペーストは縦に順番に(例えば、999のファイルから切り取ったE62からH62までのデータをファイルAのB2からE2にコピー、1000のファイルから切り取ったE62からH62までのデータをB3からE3へ…)といった感じです。 一度にフォルダ内の全ファイルを開くわけにはいかないので、999に上記の処理を行ったら保存せずに閉じ、今度は1000にといった感じで次々と処理を行っていきたいと思っております。細かいマクロは自分で作成できたのですが、コピーしたものを別ファイルAにペーストする部分と、999から1600まで連続して処理を行う部分ができません。 分かりにくい文章で申し訳ございませんがぜひご教授ください、よろしくお願いいたします。

  • エクセル2007 名前を付けて 保存 VBA(マクロ)

    エクセル2007 名前を付けて 保存 VBA(マクロ) 今回もよろしくお願いします。 今回は作業終了時にファイルに名前を付けて自動保存させたいのですがうまくいきませんのでアドバイスお願いします。 ファイル名はセルの数か所にある文字、日付などを足してファイル名にしようとしています。 例えば A1 報告書 A2 2010/03/22 A3 パソコン と入っているとします。 ファイル名は ”報告書20100322パソコン”としたいのですが、日付の処理がわかりません・・・。 普通に表示させると”報告書40259パソコン”となってしまいます。 ネットでは20100322から2010/03/22の日付形式への変換の方法は多数見受けられるのですが、逆は未だ見つけられないため、投稿しました。 同じファイル名がある時は、ファイル名+(1)のようにファイル名がダブらないようにもしたいのです。 いつも、全て手打ちでやっておりエクセルファイル保存後、PDFファイルでも同じ名前で保存しているため、可能であればPDFでも保存出来ればうれしいです。 PDFはADOBE STANDARD8といきなりPDFを使用しています。 ご教授よろしくお願いします。

  • VBAでマクロを使って、マクロ無効のエクセルシートとして名前を付けて保

    VBAでマクロを使って、マクロ無効のエクセルシートとして名前を付けて保存ってできますか?? FileFilter:="エクセルファイル(*.xlsx),*.xlsx" として保存すると、保存はできるのですが、開くことができません。 VBA初心者です。よろしくお願いします。

  • Excel2002でマクロやVBAが使えない

    ファイルNO230881にExcel97で作ったマクロがExcel2000で使えないという質問がありましたが、私の場合Excel2000で作ったマクロがExcel2002で使えません。 ファイルNO230881の方は自動修復で直ったそうですが、自動修復のリストにExcel が乗ってきていないので困っています。 起きている症状は、 Excel2000で作成したマクロを、Excel2002で実行しようとしたら、***はマクロを含んでいますとメッセージが出て、マクロを有効にすると、オブジェクトライブラリは登録されていませんというメッセージが出てきたので、OKにし、もう一度マクロを有効にしたら、「***の修復   ***にエラーが検出されましたがMicrosoftExcelは次の修復を行うことによってファイルを開くことができました。修復を保持するにはこのファイルを保存してください。  VisualBasicプロジェクトが失われました。 ActiveXコントロールが失われました。」というエラーメッセージが出てきて、マクロがなくなってしまい、また新しくマクロを記録しようとしても、記録できません、というエラーメッセージが出てきてマクロが作れなくなってしまいました。 尚、セキュリティは中にしてありますが、低でもマクロの記録ができないです。なぜでしょう? VBAプロジェクトのライブラリファイル参照がうまくいっていないということはわかるんですが、VBエディタの[ツール]>[参照設定]がグレーで開くことができません。 みなさんのお知恵をお貸しください。

  • EXCEL 保存できない!

    VBAでやっと希望どおりに出来上がってきたのですが、いつの間にか保存ができなくなりました。 EXCEL2010ですが、”EXCELが動作を停止しました。"と出てしまいます。 マクロによって、それを走らせたあと保存できないようなのです。 保存をしなければ特に問題なく動きますが、はっきり言って意味がありません。 名前をつけて別ファイルもダメですし、フォルダを変えてもダメでした。 20秒ほどの重いマクロも有りますが、重いことが問題なんでしょうか? 心あたりのある方、どうか教えてください。

  • エクセル2003VBA 新規ブックを作成、保存の時に

    いつも勉強させていただいております。 今回、VBAで以下の事をできるのかな?と思い質問させていただきました。 まず、VBAで以下の動作を作成しました。 Aファイル、データーベースCSVファイル Bファイル、VBA記述ファイル 1)Bファイルから、Aファイルを開いて、検索、条件に合うデーター を配列で抽出。 2)新規ブックを追加 3)新規ブックに抽出したデーターを書き出し と言うVBAを作成しました。 で、質問なのですが、新規ブックは保存するか、しないかがその時々に よって任意でするため、VBAで保存の所までは作成していないのですが 、保存する場合、ファイル名に規則性を持たせたいため、ファイル保存 をしたときに表示させる初期ファイル名をBファイルのVBAから変更 させる事はできるのでしょうか? 新規ブックを保存するとき、初期ファイル名は「Book1.xls」となって いると思うのですが、この値を変更することってできますでしょうか? もし可能であれば、ヒントや参考になるHPなど教えていただけないで しょうか。

専門家に質問してみよう