• 締切済み

excel VBA モジュール削除(複数ファイル)

こんにちは。 VBA初心者です。 excelでマクロを組みました。 保存先は「module1」に保存されています。 excelは「様式」ファイルにマクロを組み込んでおり、そのファイルを使用してシートに記入、別名で保存して使用しています。 最終的に200近くのファイルが出来るのですが、それら全てのmoduleを削除するのが手間なのです。  ・修正する可能性があるので、最初に保存した時点ではマクロを消したくない。  ・つまり、データが仕上がった時点でマクロを削除したい。 一括で削除できる方法は無いでしょうか?  ・マクロ削除時に不要なシートも削除しています。 方法等ございますでしょうか? この方法について検索を掛けましたが、検索の仕方が悪いのか良い方法が見つかりませんでした。 他に既に回答が在りましたら、そちらも参考にしたいのでアドレス等も教えて頂けると助かります。 よろしくお願いします。

noname#200499
noname#200499

みんなの回答

noname#154650
noname#154650
回答No.3

マクロは個人用マクロブックに保存することが可能です。記録時に保存先を選択する筈です。これにマクロを保存すると、次回以降にエクセルを立ち上げると、自動的にマクロブックも立ち上がります。マクロブックに記入されているマクロは、開いている全ブックで実行可能です。 問題は、自動記録ではなく自分で編集したマクロをマクロブックに保存出来るかどうかですが、そこは私自身も知りませんので試してみて下さい。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

理解されていないようなので明言しますが、マクロを追加削除するマクロはお答えしません。 なお、ブックを開かずにマクロを除去する方法はありません。 200冊のブックを順繰り開き、マクロを除去するマクロを組み立てて使う方法しかありません。 それで。 実は嘘:マクロはModule1にある 本当は:マクロはシートモジュールに記述している ということですね。 Sheet1のシートモジュールにマクロが記述してあるのを除去したいなら sub macro2()  worksheets.add before:=worksheets(1)  worksheets("Sheet1").cells.copy worksheets(1).range("A1")  application.displayalerts = false  worksheets("Sheet1").delete  application.displayalerts = true  worksheets(1).name = "Sheet1"  activeworkbook.close savechanges:=true end sub とでもしておけばいいです。 200冊のブックにマクロを働かせる手順は先に回答した通りです。 追加ご質問もありませんでしたので、この点はクリアしたということにします。 よっぽど遅いマシンでも、プログラムを組んでやればお茶の一杯でも飲んでいる間に終わります。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

マクロを触るマクロはマクロウィルスの方法にもつながるので、ここのような公開の質問掲示板ではあまり触れたくない話題です。 現在の手順: >excelは「様式」ファイルにマクロを組み込んでおり、そのファイルを使用してシートに記入、別名で保存して使用しています。  →修正する可能性があるので、最初に保存した時点ではマクロを消したくない。  : >データが仕上がった時点でマクロを削除したい。 「一括で」の具体的な意図が不明です。 ○200冊のブックが全部完成した後にマクロを除去するマクロを設計したい ○各ブックごとに「完成」を見た時点でマクロを除去できればよい いずれにしても、マクロを除去する方法自体はごくシンプルで 手順: 1.マクロを含んだブックを開く 2.ワークシートをまとめて新しいブックとして移動(コピー)する   マクロモジュールは置き去りにされる 3.新たなブックを名前を付けて保存する 4.手動操作でマクロ含みの原本ファイルを削除する といった段取りになります。 基本的な構文: sub macro1()  workbooks("マクロを含んだブック.xls").worksheets.copy  activeworkbook.saveas filename:="マクロなしブック.xls"  workbooks("マクロなしブック.xls").close savechanges:=false  workbooks("マクロを含んだブック.xls").close savechanges:=false end sub 加えて「200冊を一斉に」という意図だったときは、 ・フォルダに保存された200冊のブックを順繰り開く ・一冊ずつ上述のマクロを実行する といったループを追加します。 「ブックを順繰り開く」程度はネットを探せばいくらでもネタはヒットしますので、大丈夫と思います。 ブックをどのように探したらいいのか不明なのでサンプルマクロが書けない(たとえばfor to nextでbook1,2,3…を順繰り拾えばいいのか?とか )ってのが実際のところですが、あるいはわからなければVBAのヘルプでDir関数のヘルプを参照してください。

noname#200499
質問者

お礼

回答ありがとうございます。 説明不足で申し訳ありません。 補足を記入しましたので、もう一度お答えいただけると幸いです。 私も、上手く説明できないためにご迷惑をお掛けしました。 見放さず、回答いただけると嬉しいです。

noname#200499
質問者

補足

補足です。 ・一つのファイルにシートが4つあります。 ・シートをコピーする方法は検索しましたが、ブックに4シートあり、200個全てのファイルに適用するには時間が掛かり過ぎて無駄が多いので。 ・200個のファイルが出来上がり、チェックを終えた時点で完成となり、人に渡すのでマクロを除去したい。 ・全てのファイルは全てを特定の数人に配布、同時に保存用データとします。 ・マクロを使ってマクロを削除したいのではなく、シートの(module)に組み込まれたマクロを削除したい。 ・一つ一つのファイルを開く→moduleの解放では無く、何らかの方法で(例えばフォルダ内の200個のファイルの)moduleを削除したい。

関連するQ&A

  • エクセル:標準モジュールを一括削除して保存するVBA

    No.2169774の関連質問になってしまいます。 よろしくお願いします。 ◆あるエクセルファイルの任意のシートを残して、その他のシートの一括削除をして、新しい名前で保存する方法をNo.2169774で教えていただきました。 ◆その同じもとのエクセルファイルの任意のシート以外の他のシートを削除するだけでなく、『VBAprojectで保護をかけている標準モジュールをすべて一括削除すること』は可能なのでしょうか? ◆目的は、任意のシートのみを残して、VBAの書き込みもすべて削除してしまい、第三者があらたにVBAを書き込むことを含めて自由に使用できるようにしたいのです。 質問がわかりにくければ申し訳ありません。どうか、よろしくご指導をお願い申し上げます。

  • VBAでのマクロ削除

    複数のExcelファイルを読み込み必要なデータのみをsheet1に寄せ集め最後にExcel形式で保存するというコードを書きました。保存したExcelファイルは、次回同じVBAのコードからWorkbooks.Open Filenameで開く必要があるため、マクロを削除してから保存しないといけないことに気付きました。 ACompo = ExcelWorkbook1.VBProject.VBComponents.Item("module1") ExcelWorkbook1.VBProject.VBComponents.Remove (ACompo) 最終的にやりたいことは、3つのフォームと2つの標準モジュールを削除したい(ワークブックモジュールにもコード書いてありますのでそれも) ということになります。 よろしくお願いします。

  • EXCEL2003VBA 「マクロでモジュール解放」

    質問番号:5548045の関連質問です。 EXCEL2003VBA で、セキュリティ設定で『Visual Basic プロジェクトへのアクセス』にチェックを入れて、Module1に下記のように「モジュール解放」マクロを作成しましたが、Module1が削除されません。(1)を削除して、手動操作で変更を保存でファイルを閉じるとModule1も削除されます。 Module1の削除も全てマクロで行うやり方を教えてください。 With ThisWorkbook.VBProject.VBComponents .Remove .Item("Module1") .Remove .Item("Module2") .Remove .Item("Module3") End With ActiveWorkbook.SaveAs Filename:="D:\TEST" ActiveWorkbook.Close ・・・(1)

  • Excel VBAのゴミ?処理

    ExcelのVBAを修正、追加してそのまま保存するとファイルサイズが増えていきます。そのためにこのファイルを実行するとエラーが発生してしまうことがある。 私はこれを回避するために一度マクロモジュールを抜いてシートだけ保存し、モジュールのインポートを行い合成してファイルの管理をしています。これがマクロを変更する度におこなうのが手間である。何方か良い方法があれば教えてください。

  • エクセルファイルのシート毎の容量

    エクセルファイル「xls」のなかに複数のシートがあります。 フォームとして使っているのですが、20程のシートがあり、どのシートに何Mを使っているのか分からないのですが、 5MBもの容量があります。 特に、何かを入力した記憶もないのですが、どのシートが容量を食っているのか調べたいのですが、シート毎の容量を調べる方法があれば教えてください。 ※ 元のファイルを別名で保存。1シートずつ削除していく方法も考えられますが、時間と手間がかかるため何か他によい方法がありましたらお教えください。

  • 「開いているすべてのブック」に保存したマクロの削除

    パソコンド素人です。マクロが含まれたほかのエクセルブックを多数開いたまま、エクセルマクロ初心者講座(http://kabu-macro.com/kouza/macro/macro_jikkou.html)を見ながら、A1のセルのデータを消去するマクロを作って実行したところ、実行時の保存先が「開いてるすべてのブック」になっていたからなのか、他のエクセルのブックでも新しくシートを作っても、Ctrl+Z (ショートカットを作っていました)でA1のデータが削除されるようになってしまいました。(実行前には標準モジュールのModule2にこのVBAが入ってたのを確認したのですが、実行後にはModule2がなくなっていました) このままでも問題はないのですが、わからないのは悔しいので、どなたかこのマクロの削除方法を教えてください!  個人用マクロブックとやらにあるらしいことはわかったのですが、そのファイルが検索しても出てきません。OSはVistaでエクセル2000と2007を使用してます。ちなみにエクセル2000でこのマクロを作ったのに2007でもCtrl+ZでA1のデータが削除されます。 よろしくお願いします。

  • VBAについて教えて頂けませんか?

    昨日から、エクセル2003を使ってVBAを、勉強している者です。 ネット上で調べながら、取合えず簡単なVBAを入れる事が出来ました、ですがエラーばかりで、どうしても先に行けず困っています。 ネット上で参考になる、VBAなどを見て思ったのですが エクセルのVisual Basicを開くと、左側に「Sheet1」とか「Module1」等があります。 参考になるVBAでは、「Sheet1」に書かれているのがあれば、「Module1」に書かれているのもあります。 VBAは「Sheet1」に、書き込まれるべきなのでしょうか?それとも 「Module1」に、書き込まれるべきなのでしょうか? 私の場合、例えば「1」「2」「3」と数字を打ってマクロの記録をして、Visual Basicを開くと、すべて「Module1」に書き込まれます。 すみませんが、教えて頂けませんか?

  • エクセルから指定フォルダーのファイルを削除?

    またまた お願いします。 エクセルで作成したシートを指定のフォルダー内にCSVで保存することが できましたが、逆にそれを削除するにはマクロやVBAでどう記述すればよいのでしょうか? エクセルヘルプみてもわかりませんでした。 お願いします。

  • エクセルVBAについて

    今、エクセルVBAでマクロの作成を行っています マクロの中で、作業用に別なエクセルとシートを作成したのですが マクロの最後でその作業用のエクセルとシートを削除する用にしました。 その際に、エクセルがメッセージボックスが開き 『このエクセルブックを閉じますか』や『このシートを削除してよろしいですか』などと聞いてきます。 このボックスを出さないように強制的に消すことは出来ないのでしょうか? 出来るのであれば、やり方を教えてください。

  • excelファイルを上書きしてしまった・・・

    excelファイルを上書きしてしまいました・・・。 そのexcelファイルは、10近くのシートを使っていて、 8つほどのマクロを記録していました。 ファイル自体が重たく、保存する際エラーが出ました。 別名で保存しようにもできませんでした。 そのため、新しいexcelファイルに作業内容だけを移し、 一旦excelを閉じて、コピペし直そうとしました。 ですが、その新しいexcelファイルを元のexcelファイルに、 誤って上書き保存してしまいました・・・。 この元のexcelファイルに戻すには、どのような方法があるでしょうか? どうしても復元できないと困ります。 excel2016です。 よろしくお願いいたします。

専門家に質問してみよう