• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCELマクロでのThisisWorkbookの削除をしたいです。)

EXCELマクロでのThisisWorkbookの削除方法とは?

このQ&Aのポイント
  • EXCELマクロでのThisisWorkbookの削除方法について教えてください。
  • 現在、EXCELのThisisWorkbookにて最後に処理したシートの内容を別名に保存してからマクロを削除する方法について調べていますが、うまく行きません。
  • 他の方法を探しているので、EXCELマクロでのThisisWorkbookの削除方法があれば教えてください。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.5

回答3、myRangeです。 当方もWendy02さんに賛成です。 が、それは置いといて。。。(^^;;;   >ただ、元からの他のロジックを含めたものと一緒にマクロにすると、 >そのマクロ自体がウィルスとの認識されてしまいます。 であれば、その元からのロジックというものも提示しないと だあーれも的確なアドバイスはできないのでは、と考えますがどうでしょう。 そしてまた、それも置いといて。。。別案。 Thisworkbookモジュールにはworkbook_Openイベントしかないのでしょうか。 であれば、コードを削除するのではなくて次のようにはできませんか? (1)非表示(veryhidden)にしたコントロール用のシートを用意して (2)別名保存の時、またはその前に、そのシートの決まったセル(例えば、A1)に、フラグ(例えば、"公開"という文字)をセットする (3)WorkBook_Openイベントでそのセルをチェックして"公開"がセットされてたら、処理をジャンプする   '----------------------------------------- Private Sub Workbook_Open() If Sheets("フラグ").Range("A1").Value = "公開" Then Exit Sub '****通常の処理*** '●フラグセット   Sheets("フラグ").Range("A1").Value = "公開"   End Sub '---------------------------------------- 以上です。  

imachan_net
質問者

お礼

大変ありがとうございました。 脱帽です!! お知恵ありがとうございました。 1回処理したあとはデータが入る前提ですので、 1行目のセルのデータ判定で以下の様にしました。 例です。(11行目から入ります) If Sheets("data").Range("A11").Value <> "" Then Exit Sub 本当にありがとうございました。 私は、何とかCLOSEの処理を別に作ることとかも考えていましたが、 このやり方のが大変良いですね。 ただ、1回目と2回目以降とで処理が違うのは、 下手するとウィルスみたいななものですよね・・・ 気をつけます。 とても良い1日になりそうです。

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

その他の回答 (4)

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

同じような質問はずいぶんでできているはずですが、どうしてVBAコードを削除するという発想になるのかな、私にはよく分からないです。そんなことは、他人の環境では簡単に行くとは思えないし、それを簡単にする方法っていうのは、もう挙動がウィルスになると思います。 >今回もいろいろと他の質問内容等を参考にしていますが、 >解決出来ません。 私はかなり別所で力説したこともあります。 実は、この件では、以前の、シートのセルコピーをすればよいと書きましたが、こんな簡単なことが理解出来ないのか、それとも気に入らないのかと、私としては、未だに引きずっているわけです。いつも同じパターンの質問で、それ以外は認めようとしない人が多いわけです。Office Tanakaの田中亨氏の問題なのか、テクニックだけを無責任に載せれば、誰でもそちらに目がいくけれども、もう10年も前のテクニックの話です。そんなものが通用するわけではないし、モジュール内の削除しても、最終的には、標準モジュールなどは、モジュールそのものを削除しなければしょうがないです。 #1さんの書き込みとアドバイスでは、ほとんどカバーしているとは思うけれども、#1の補足を読んだ こちらのアドバイスとしては、アドインを作ったらよいと思います。ただし、そういう理解と技術がないと話は進みませんが。アドインのプログラムは、他人の環境には渡りません。 マクロでマクロを削除するなんていうことは、実験ならともかく、考えないことですね。最終的には、モジュールそのものを削除するということになるのですから、外部からアクセスしないと無理です。そういうコードを書くとなったら、VBAではなくなってしまいます。

imachan_net
質問者

補足

ありがとうございます。 私は自動記録の上に、それでは出来ない所を、 ネットなりで調べてVBAに修正、追加をしているレベルです。 ですから、Wendy02さんは、 かなりのVB及びVBAのご知識があるようですので、 私には到底わからない部分も多々有ります。 > どうしてVBAコードを削除するという発想になるのかな、私にはよく分からないです。 > もう挙動がウィルスになると思います。 > シートのセルコピーをすればよいと・・・ 挙動が確かにウィルスに近いものとは 私も思います。 ただ、ThisWorkbookは削除して、 標準モジュールとデータシート(処理後)を、 他のファイルとして作成したい・・・というのが、 私の実現したいことなのです。 言われる通りに、EXCELやVBAで出来ること、 簡単には出来ないこと、他の環境を含めて絶対出来ないこと、 あるとは思いますが、 他のやり方を含めて、考え方等で 出来ることがご助言頂ければと思います。 私としても、どうしても無理な場合には、 2つのファイルでの運用を検討をしてはいますが・・・ よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

Workbook_Openだけではなくて、 ThisWorkbookモジュール内の全てのコードを削除するんですよね? で、あればWorkbook_Openと特定しないで 1行目(Option Explicit)からモジュール内最終行まで削除、 としてやればいいのではありませんか。 '----------------------------------- With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule   .DeleteLines 1, .CountOfLines End With '------------------------------------   これを別名保存するコードの直前に置いておく。 以上です。  

imachan_net
質問者

補足

大変ありがとうございます。 提示してもらいました内容で、 単独だとマクロが正しく処理されました。 ただ、元からの他のロジックを含めたものと 一緒にマクロにすると、 そのマクロ自体がウィルスとの認識されてしまいます。 どの部分が悪いのかはまだ特定出来ていませんが、 もし情報なり、ご知識、ご経験等有れば、 教えて頂ければ幸いです。

全文を見る
すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

>ThisisWorkbook ThisWorkbookのことでは? VBAで、他のbookのマクロを削除することはできますが、 実行中の(自身の)マクロは削除できません。 >別名にて保存してから、保存したファイルを一度開いて、 >ThisisWorkbookのマクロを削除 新しいブック(マクロは無い)を作り、シートだけコピー して、別名で保存すればよいのでは? マクロ付きと公開用はフォルダを分ければ問題ないように 思いますけど・・・ 後は特定のフォルダ内のExcelファイルからマクロを除去 する特別なExcelを作っておいて、これを実行するという 方法もあるかな。

imachan_net
質問者

補足

ありがとうございます。 補足です。 > ThisWorkbookのことでは? そうです。 記述ミスでした。 リンク先にある以下の例もあるのですが、 これを実行すると、 ”プロシージャ、または引数・・・”でエラーとなります。 **質問に記載のリンク先より引用 Private Sub Workbook_Open() MsgBox "これは自動実行マクロで表示しています" With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule .DeleteLines .ProcBodyLine("Workbook_Open", 0), .ProcCountLines("Workbook_Open", 0) End With End Sub *** なので、何とか、出来るのかな、って思っているのですが、 やはり無理ですかね?

全文を見る
すると、全ての回答が全文表示されます。
  • WDY
  • ベストアンサー率28% (121/431)
回答No.1

急いでいるのはなんとなく分かりますが 落ち着いて書いて下さい。 やっている事 (1)ExcelのマクロにてCSVファイルの取込 >ワークシート上の各種設定をしてから・・・・ (2?)各種設定?何をしたのでしょうか? (3?)別名付けて保存?内容を別ファイルに貼り付け? (4)マクロを使い複数人に配布(メール?共有フォルダにコピー?) >このために、EXCELのThisisWorkbookにて >ファイルを読み込み時の複数のマクロの処理を書いていて、 >他に標準モジュールで複数のマクロの処理を書いています。 上記処理をしているからCSVファイルを取り込んだExcelにマクロが書かれている? それとも配布用のExcelファイルにマクロが書かれている? >そして、マクロでさらにやりたいことは、 >現在は、そのThisisWorkbookにて最後に処理したシートの内容を >別名にて保存してから、保存したファイルを一度開いて、 別名保存をした後に一旦閉じて開いてマクロ処理?←閉じた時点で処理が終わっているので不可能です。 >ThisisWorkbookをマクロで削除する ThisisWorkbookは処理をしているBOOKを指しているのにそのマクロを削除?(矛盾しています) こうしたいのでしょうか? (1)CSVファイルの取込 (2)取り込んだファイルを編集し、別名保存 別名保存するとマクロも一緒に保存されてしまう為、シートのコピー等でマクロが入っていないBookを作りたいという事でしょうか? 質問を質問で返さない様な書き方でお願いします。

imachan_net
質問者

補足

ありがとうございます。 補足します。 (1)CSVファイルの取込(ヘッダー行等付きのファイル)+行数分の関数貼り付け等 ※ThisisWorkbook(実行時の一連の処理)、標準モジュール(メンバー処理用) (2)別名保存(ThisisWorkbookはいらない) ※実行したファイル、別名保存したファイルを閉じるとともにEXCELは終了しています。 をしたいということです。 > ThisisWorkbookは処理をしているBOOKを指しているのにそのマクロを削除?(矛盾しています) 確かに矛盾しているように思いますが、 やりたいことです。 自分なりに最悪は2つのファイルに分けることも想定していますが・・・ よろしくお願い致します。

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

関連するQ&A

  • VBAでのマクロ削除

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

  • Excelマクロを削除したのに…

    こんにちは。 いまExcel2003を使用しています。 あるブックファイルにマクロプログラム(VBA)を作成しました。 VBAProjectエクスプローラには標準モジュール「Module1」 ができています。 そこでこのマクロ自体を削除することになり, VBAProjectエクスプローラから標準モジュール「Module1」 を開放しました。 ところが当該ブックファイルを一旦閉じて, 改めて開くと,[セキュリティ警告]ダイアログが表示されて, マクロを有効にするか無効にするかを聞いてきます。 マクロを消したら, マクロセキュリティレベルを変えないままで, 上記のダイアログが出ないようにしたいのですが, どうすれば良いでしょうか? 教えてください。 よろしくお願いします。

  • エクセルマクロでファイルを開いて保存したいです。

    エクセルマクロでファイルを開いて保存したいです。 エクセルファイルでファイル名「編集」という物を開きます。 このSheet1には中央にコマンドボタンが作成して有ります。 このボタンをクリックして以下の作業をマクロで行いたいです。 1.エクセル標準の「ファイルを開く」のメッセージボックスが開く 2.ここは使用者が作業をしてもらう   マイドキュメントだったり、マイネットワークだったり、   (ファイルの種類はCSVにする)   処理をしたいCSVファイルを探してもらい選択後、開くをクリック   例えば20100922.CSVを選択し開くをクリック 3.クリックと同時にそのファイルが展開されて、「編集」のエクセルファイルの   Sheetにシート名「集計」が作成されそのシートにCSVファイルの全内容がセルA1から貼り付く。   さらに登録してあるマクロモジュールで編集処理がされ   マクロを引き継がず、シート「集計」だけを   ファイル名は固定でそのファイル名の後ろに作成日(システム日付)を入れて   参照したCSVファイルの保管場所に保存する。   ファイル名例:売上20100923.xls(売上は固定) 4.エクセル「編集」のファイルからシート「集計」を削除する。 5.メッセージBOXで「編集終了」と表示 次回エクセルファイル「編集」を開くと、コマンドボタンだけである。 また作成された「売上20100923」はマクロがないから開くときに マクロのメッセージは出ない。というようにしたいです。 NO.2のファイルを選択する作業は作業者にしてもらいますが シート1のコマンドボタン1回を押すだけでNO.1~NO.5まで完結させたいです。  NO.3のマクロ処理はマクロの記録でモジュールができています。 このマクロの作成方法と、そのマクロが出来たら その文のどこに作成済みの処理文を入れればいいのかわかりません。 よろしくお願いします。 ここでつまづいています。この後この選択したファイルの全内容が シートの集計に展開されません。 Private Sub CommandButton1_Click() Call 集計 End Sub Sub 集計() FullPath = Application.GetOpenFilename("CSV,*.CSV") If FullPath <> "False" Then Sheets("Sheet1").Select Sheets.Add ActiveSheet.Name = "集計" With ActiveSheet.QueryTables.Add(Connection:="CSV;" & FullPath, Destination:=Range("A1"))   マクロの記録で作成したマクロ   シート"集計"をマクロを引きつかずファイル名売上&システム日付で保存   シート"集計"を削除する

  • エクセルのマクロについて質問です

    あるエクセルファイルを開く際、必ず『●●●.xlsはマクロをふくんでいます』という警告が出てきます。 このメッセージを消したいのですが、どうすればよいでしょうか?? 過去の質問を閲覧したところ、Visual Vasic Editorを立ち上げ、 標準モジュールを開放すれば解決するとのことでしたが、 標準モジュールは存在しないようです。 それぞれのシートモジュールにもなにも記述はありません。 長年「マクロを無効にする」で回避していましたが、そろそろ解決したいと思い質問しました。 お力を貸してください。宜しくお願いします。

  • エクセルのマクロでのシートの削除について

    エクセルのマクロについて エクセル97でファイルを閉じる前にシートを一つ削除するマクロを流そうとしているのですが、 マクロが流れるとシートを削除するかどうかの確認のダイアログが表示されてしまいます。 この確認のメッセージなしでマクロでシートを削除することは出来ないのでしょうか? ----------------- 実際のプログラム ------------------ Sheets(シート名).Select ActiveWindow.SelectedSheets.Delete わかる方がおられましたら宜しくお願い致します。

  • マクロでマクロを削除、または停止させるには?

     1つのExcelファイルからマクロを走らせて、複数のExcelファイルにあるデータを集めたいと思っています。 ただ、複数のExcelファイルは、ファイルを閉じる際にマクロが走るようになっているので、このマクロが走らないようにして、データを集めたいです。  そこで、実現したいのは、1つのExcelファイルから集計用のマクロを走らせる時に、複数のExcelファイルに設定してあるマクロを削除するか、あるいは、マクロを停止させたいです。  ちなみに、複数のExcelファイルを開いた後、閉じないことにより、マクロを走らせないようにして、集計を行うマクロを試しましたが、開いたままのファイル数が多いようで、途中でエラーが出て止まってしまいます。  アドバイスをお願いいたします。

  • Excelマクロの削除

    Excelにて別のExcelのデータをコピーし、名前を付けて保存するマクロを作成しております。 その際、新しく作成したファイルにマクロが残ってしまいます。そのファイルにマクロを残さない方法はありますか? またそのマクロをツール→マクロ→削除をしても次回、ファイルを開いたときに、マクロの有効無効を聞かれます。 他にマクロを削除する場所があるのでしょうか? よろしくお願いします。

  • Excel VBA 標準モジュールの整理?

    Excel2003を使用しています。 ある人が作成したファイルが数十人分、WEB上に保存してあり、マクロも数個含まれています。 マクロの内容は、シート上に配置されているボタンをクリックすることで印刷する書類(印刷範囲)を変更するといった簡単なものがほとんどなのですが、マクロの記録を何度もとりながらコードを書いたらしく、標準モジュールが20個もありましたが、空のモジュールのほうが多かったです。 また、マクロに判別しやすい名前が付いていないため、このボタンのコードは、どのモジュールに書かれているのかが分からないので、ひとつひとつ確認しながら、空のモジュールは削除し、同じシート上で行う処理は、同一のモジュール内にまとめるなどして、標準モジュールを整理しました。 上記のことを自分用に作成されているファイルで行いましたが、同じ部署内の分は私が管理するので、標準モジュールの内容(モジュールの数とコード)を私のファイルと同じようにしたいのですが、コピペのような簡単な方法はあるでしょうか? 質問内容が分かりづらくて申し訳ありませんが、よろしくお願いします。

  • エクセルで自身のマクロを削除したい

    エクセル97です。 あるエクセルを起動すると、特定のデータを編集しシートに書き込み 任意のファイル名を付けてSAVEするマクロを組んでいます。 このエクセルファイルを別人が見ます。 別人がこのエクセルファイルを見るときには マクロの起動はしないように組んでいますが、 マクロを見ようと思えば見れてしまいます。 別人に引き渡す時にはマクロを削除した形で SAVEしたいのですが、そのようなことは可能でしょうか? 削除できなくとも、マクロを見ることができないように する機能などがあるのでしょうか? どなたかご存知の方がいらっしゃったら教えてください。 よろしくお願い致します。

  • エクセルのマクロの削除

    エクセル2003で、どのファイルでもマクロを使えるように、PERSONAL.XLSを作りました(そのなかにマクロが入っています)。そのファイルおよび、マクロがいらなくなったので、削除したいのですが、やり方が分かりません。エクセルを立ち上げると必ず、そのファイルが開くことになり、ほかのマクロのじゃまになるので、削除したいのですが分かる方教えてください。よろしくお願いします。

このQ&Aのポイント
  • らくちんプリント3.0のインストール時、「PDM:Trojan.Win32.Generic」を検知したとのアラートが出ました。
  • これは誤検知でしょうか?
  • 過去に同様の問題はありますか?
回答を見る

専門家に質問してみよう