EXCELマクロでのThisisWorkbookの削除をしたいです。
いつもとても助けられています。
今回もいろいろと他の質問内容等を参考にしていますが、
解決出来ません。
お力を貸して下さい。
やりっていることは、毎回CSVファイルを自動で読み込みして、
ワークシート上の各種設定をしてから公開用のEXCELファイルとして、
別のファイルに保管しています。
そして、その公開用ファイルにては複数のメンバーにて、
付いているマクロ(標準モジュール)を使って処理をします。
このために、EXCELのThisisWorkbookにて
ファイルを読み込み時の複数のマクロの処理を書いていて、
他に標準モジュールで複数のマクロの処理を書いています。
そして、マクロでさらにやりたいことは、
現在は、そのThisisWorkbookにて最後に処理したシートの内容を
別名にて保存してから、保存したファイルを一度開いて、
ThisisWorkbookのマクロを削除
(メンバーが使う時は最初の読み込み時の処理は不要でエラーとなる)
する必要がありますが、
この操作を無くして、自動化することです。
ThisisWorkbookをマクロで削除する例や
シートのみコピーをコピーしたあとに
標準モジュールをエクスポート・インポートすればいい??
とか見つけたのですが、
ウィルス対策ソフトでウィルス判定されてしまう等、
うまく行きません。
なんとか他のやり方なので、やる方法はないでしょうか。
現在のEXCELは2000ですが、
以降の上位バージョンでも出来ることが望ましいです。
よろしくお願い致します。
尚、他のやり方としては、
今の1つのファイルでのやり方を、
ThisisWorkbookでの内容のファイルと、
公開用のファイルを最初から用意しておいて、
2つのファイルで処理することも考えましたが、
出来れば2つのファイルの運用になるのでやりたくないのです。
以下は自分がネットで調べた情報です。
http://officetanaka.net/excel/vba/vbe/07.htm#sam …
http://www.seiji-tsubosaki.net/ExcelTech/ExcelPr …
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
'----------------------------------------
以上です。
大変ありがとうございました。
脱帽です!!
お知恵ありがとうございました。
1回処理したあとはデータが入る前提ですので、
1行目のセルのデータ判定で以下の様にしました。
例です。(11行目から入ります)
If Sheets("data").Range("A11").Value <> "" Then Exit Sub
本当にありがとうございました。
私は、何とかCLOSEの処理を別に作ることとかも考えていましたが、
このやり方のが大変良いですね。
ただ、1回目と2回目以降とで処理が違うのは、
下手するとウィルスみたいななものですよね・・・
気をつけます。
とても良い1日になりそうです。
No.4
- 回答日時:
同じような質問はずいぶんでできているはずですが、どうしてVBAコードを削除するという発想になるのかな、私にはよく分からないです。
そんなことは、他人の環境では簡単に行くとは思えないし、それを簡単にする方法っていうのは、もう挙動がウィルスになると思います。>今回もいろいろと他の質問内容等を参考にしていますが、
>解決出来ません。
私はかなり別所で力説したこともあります。
実は、この件では、以前の、シートのセルコピーをすればよいと書きましたが、こんな簡単なことが理解出来ないのか、それとも気に入らないのかと、私としては、未だに引きずっているわけです。いつも同じパターンの質問で、それ以外は認めようとしない人が多いわけです。Office Tanakaの田中亨氏の問題なのか、テクニックだけを無責任に載せれば、誰でもそちらに目がいくけれども、もう10年も前のテクニックの話です。そんなものが通用するわけではないし、モジュール内の削除しても、最終的には、標準モジュールなどは、モジュールそのものを削除しなければしょうがないです。
#1さんの書き込みとアドバイスでは、ほとんどカバーしているとは思うけれども、#1の補足を読んだ
こちらのアドバイスとしては、アドインを作ったらよいと思います。ただし、そういう理解と技術がないと話は進みませんが。アドインのプログラムは、他人の環境には渡りません。
マクロでマクロを削除するなんていうことは、実験ならともかく、考えないことですね。最終的には、モジュールそのものを削除するということになるのですから、外部からアクセスしないと無理です。そういうコードを書くとなったら、VBAではなくなってしまいます。
この回答への補足
ありがとうございます。
私は自動記録の上に、それでは出来ない所を、
ネットなりで調べてVBAに修正、追加をしているレベルです。
ですから、Wendy02さんは、
かなりのVB及びVBAのご知識があるようですので、
私には到底わからない部分も多々有ります。
> どうしてVBAコードを削除するという発想になるのかな、私にはよく分からないです。
> もう挙動がウィルスになると思います。
> シートのセルコピーをすればよいと・・・
挙動が確かにウィルスに近いものとは
私も思います。
ただ、ThisWorkbookは削除して、
標準モジュールとデータシート(処理後)を、
他のファイルとして作成したい・・・というのが、
私の実現したいことなのです。
言われる通りに、EXCELやVBAで出来ること、
簡単には出来ないこと、他の環境を含めて絶対出来ないこと、
あるとは思いますが、
他のやり方を含めて、考え方等で
出来ることがご助言頂ければと思います。
私としても、どうしても無理な場合には、
2つのファイルでの運用を検討をしてはいますが・・・
よろしくお願い致します。
No.3
- 回答日時:
Workbook_Openだけではなくて、
ThisWorkbookモジュール内の全てのコードを削除するんですよね?
で、あればWorkbook_Openと特定しないで
1行目(Option Explicit)からモジュール内最終行まで削除、
としてやればいいのではありませんか。
'-----------------------------------
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
.DeleteLines 1, .CountOfLines
End With
'------------------------------------
これを別名保存するコードの直前に置いておく。
以上です。
この回答への補足
大変ありがとうございます。
提示してもらいました内容で、
単独だとマクロが正しく処理されました。
ただ、元からの他のロジックを含めたものと
一緒にマクロにすると、
そのマクロ自体がウィルスとの認識されてしまいます。
どの部分が悪いのかはまだ特定出来ていませんが、
もし情報なり、ご知識、ご経験等有れば、
教えて頂ければ幸いです。
No.2
- 回答日時:
>ThisisWorkbook
ThisWorkbookのことでは?
VBAで、他のbookのマクロを削除することはできますが、
実行中の(自身の)マクロは削除できません。
>別名にて保存してから、保存したファイルを一度開いて、
>ThisisWorkbookのマクロを削除
新しいブック(マクロは無い)を作り、シートだけコピー
して、別名で保存すればよいのでは?
マクロ付きと公開用はフォルダを分ければ問題ないように
思いますけど・・・
後は特定のフォルダ内のExcelファイルからマクロを除去
する特別なExcelを作っておいて、これを実行するという
方法もあるかな。
この回答への補足
ありがとうございます。
補足です。
> 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
***
なので、何とか、出来るのかな、って思っているのですが、
やはり無理ですかね?
No.1
- 回答日時:
急いでいるのはなんとなく分かりますが
落ち着いて書いて下さい。
やっている事
(1)ExcelのマクロにてCSVファイルの取込
>ワークシート上の各種設定をしてから・・・・
(2?)各種設定?何をしたのでしょうか?
(3?)別名付けて保存?内容を別ファイルに貼り付け?
(4)マクロを使い複数人に配布(メール?共有フォルダにコピー?)
>このために、EXCELのThisisWorkbookにて
>ファイルを読み込み時の複数のマクロの処理を書いていて、
>他に標準モジュールで複数のマクロの処理を書いています。
上記処理をしているからCSVファイルを取り込んだExcelにマクロが書かれている?
それとも配布用のExcelファイルにマクロが書かれている?
>そして、マクロでさらにやりたいことは、
>現在は、そのThisisWorkbookにて最後に処理したシートの内容を
>別名にて保存してから、保存したファイルを一度開いて、
別名保存をした後に一旦閉じて開いてマクロ処理?←閉じた時点で処理が終わっているので不可能です。
>ThisisWorkbookをマクロで削除する
ThisisWorkbookは処理をしているBOOKを指しているのにそのマクロを削除?(矛盾しています)
こうしたいのでしょうか?
(1)CSVファイルの取込
(2)取り込んだファイルを編集し、別名保存
別名保存するとマクロも一緒に保存されてしまう為、シートのコピー等でマクロが入っていないBookを作りたいという事でしょうか?
質問を質問で返さない様な書き方でお願いします。
この回答への補足
ありがとうございます。
補足します。
(1)CSVファイルの取込(ヘッダー行等付きのファイル)+行数分の関数貼り付け等
※ThisisWorkbook(実行時の一連の処理)、標準モジュール(メンバー処理用)
(2)別名保存(ThisisWorkbookはいらない)
※実行したファイル、別名保存したファイルを閉じるとともにEXCELは終了しています。
をしたいということです。
> ThisisWorkbookは処理をしているBOOKを指しているのにそのマクロを削除?(矛盾しています)
確かに矛盾しているように思いますが、
やりたいことです。
自分なりに最悪は2つのファイルに分けることも想定していますが・・・
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Excel(エクセル) マクロの付いたExcelが開けません 3 2023/02/01 10:54
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
エクセルファイルを自身のファイルで削除する方法
Excel(エクセル)
-
マクロでマクロを削除する
Excel(エクセル)
-
エクセルのvbaにて thisworkbookに記載のマクロを他のブックにマクロにて自動コピー出来る
Excel(エクセル)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
マクロを消すマクロは不可能?
Excel(エクセル)
-
6
Excel:マクロを消す方法教えてください。
Excel(エクセル)
-
7
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
8
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
9
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
10
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
11
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
12
マクロをマクロを使ってコピーしたい
その他(Microsoft Office)
-
13
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
14
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
15
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
16
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
17
ファイルのアクセス回数について
Access(アクセス)
-
18
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
-
19
開いているファイルを削除し、別名で保存する方法
Visual Basic(VBA)
-
20
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
エクセルVBA
-
Excel マクロ VBA プロシー...
-
エクセルで特定の列が0表示の場...
-
一つのTeratermのマクロで複数...
-
エクセルに張り付けた写真のフ...
-
TERA TERMを隠す方法
-
マクロ実行時、ユーザーフォー...
-
ExcelVBAでPDFを閉じるソース
-
ソース内の行末に\\
-
ExcelのVBA。public変数の値が...
-
#defineの定数を文字列として読...
-
EXCELのVBAでRange("A1:C4")を...
-
vba マクロでファイル名をつけ...
-
wordを起動した際に特定のペー...
-
VBAのIF分で時間指定の条件式の...
-
Teraterm 1行空白を入れたい。
-
Excel2007VBAウォッチ式の結果...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
特定のPCだけ動作しないVBAマク...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
Excel VBAからAccessマクロを実...
-
EXCELのVBAでRange("A1:C4")を...
-
ExcelVBAでPDFを閉じるソース
-
エクセルに張り付けた写真のフ...
-
エクセルで別のセルにあるふり...
-
TERA TERMを隠す方法
-
2つのマクロでチェックボックス...
-
マクロ実行時、ユーザーフォー...
-
【マクロ】1つのマクロの中に...
-
ピボットテーブルでの毎回可変...
-
特定文字のある行の前に空白行...
-
エクセルのマクロについて教え...
-
wordを起動した際に特定のペー...
おすすめ情報