プロが教える店舗&オフィスのセキュリティ対策術

エクセルにてマクロを利用し作業しています。

メール等で送るときに手作業でマクロを消去してますが
これを「マクロ」を使ってできないものでしょうか?

検索したのですが該当するものがないようなので
教えていただけますでしょうか?

A 回答 (7件)

おはようございます。


コードをコードで弄るのはあまりお奨めできませんが、下記のコードを試してみてください。
Excel2000で動作確認済みです。
但し、必ずコピーを取ってからにしてくだされ。
Wendy02さんの話では2002以降はできないそうですのでその時は無視願います。
-----------------------------------------------

Sub CodeDelete()
 Dim Obj As Object
 For Each Obj In ThisWorkbook.VBProject.VBComponents
  With Obj
    If .Type = 100 Then
      With .CodeModule
        .DeleteLines 1, .CountOfLines
      End With
    Else
      Application.VBE.activeVBProject.VBComponents.Remove Obj
    End If
  End With
 Next Obj
End Sub

-----------------------------------------------
以上です。
    • good
    • 1
この回答へのお礼

お礼が大変遅くなったことをまずはお詫びします。

早速試してみました・・・完璧です。

エクセル関連のサイトを探していたものがなく
半ばあきらめていたのですが助かりましたm(_ _)m

お礼日時:2005/05/03 09:15

またまたこんにちは。


訂正です。

NO.3の回答で
「2002以降はできないそうですのでその時は無視願います」
と書きましたが

2002以降で実行する時は
マクロ「セキュリティ」ダイアログで
「Visual Basic Projectへのアクセスを信頼する」にチェックを入れてから実行してみてください。

尚、実行後はセキュリティの為に元に戻しておいてください。
以上です。


----------------------------------------
to Wendy02さん

そういう意味でしたか。
Wendy02さんからのレスはつい裏に何か潜んでないかと・・・。(^^;;;
これからも宜しくお願いします。
 
    • good
    • 0

taocat さん、言葉足らずにすみません。

m(__)m

他のユーザーさんが使う時のために、念のため
>一応、[お書きになったコードは、]標準モジュール(.Type =1)に、設定[=貼り付け]……

ということで、書かせていただいた、だけです。

私は、VBAはやっと入門編を越えたレベルで、分からないことが一杯です。
    • good
    • 0
この回答へのお礼

レスが遅れたことをまずはお詫びします。

お二人のように「前向きな」応酬合戦大好きですw

もう一年ぐらいVBAの勉強はしてるんですがなかなか
上達せず「はぁ~」だったんですがこうゆう話ができる
くらい私も頑張ろうって気になりました。

ホントにありがとうございました。

お礼日時:2005/05/03 09:21

to Wendy02さん



>私は書かないのに、余計なことを言って申し訳ありませんが、

何を仰いますやら、Wendy02さんみたいな経験豊富な方の意見はこちらからお願いして聞かせて頂きたいくらいです。どしどし忌憚のないご意見をお聞かせください。

>一瞬で終わってしまうものですが、このコードを動かしている最中に、何が起こるか分からないので、こういう内容の時は、
>Excelを、Application.Interactive =False で眠らしておいたほうがよいというように覚えましたが、どう思われますか?

一瞬で終わってしまう故に必要ないかと・・・。(^^;;;

余談ですが、「Excelを眠らせておく」、このフレーズは気に入りました。どこか専門家風の響きが・・・。メモメモ。(^^;;;

>.Type = 100、ということは、Not 100 ということですから、一応、標準モジュール(.Type =1)に、設定ということですね。

意味がちょっと分かりかねますが・・・。(^^;;;

-----------------------------------------------
序といっては何ですが、質問者もコードの内容が分からないと不安でしょうからちょっと説明をしておきます。

Type=100 は、ThisWorkBook, Sheetを表しています、
で、それらの場合は中のコードだけ削除。
それ以外、標準モジュール、UserForm等は丸ごと削除。
そんな感じです。

以上です。
    • good
    • 0

taocatさん、こんにちは。


コード読ませていただきました。
私は書かないのに、余計なことを言って申し訳ありませんが、
コードを走らせると、一瞬で終わってしまうものですが、このコードを動かしている最中に、何が起こるか分からないので、こういう内容の時は、

Excelを、Application.Interactive =False で眠らしておいたほうがよいというように覚えましたが、どう思われますか?
ただし、Application.Interactive =True で戻さないと、Excelが入力できなくなります。

.Type = 100
ということは、Not 100 ということですから、一応、標準モジュール(.Type =1)に、設定ということですね。
    • good
    • 0

Excel 2002以降は、VBAで、VBProject の操作が禁止されていたように思います。

そうでなければ、出来ます。

また、送信用にしているブックにマクロを直接入れるよりも、アドインにしておいて、ブックを操作したほうが良いですね。
    • good
    • 0

マクロを消すと考えると難しいですが,


全シートのデータをコピーして新しいファイルに保存する,または全シートのデータをコピーして新しいBookをメモリ上に作るマクロを作られたら解決すると思います。

ファイルの中からマクロを取るのではなく,シートのデータを新規ファイルに貼り付けるということです。
    • good
    • 0

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

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


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