
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
追記。
ANo.4の方法での自己消滅は、エクセルのファイルそのものを消去するので、慎重にテストして下さい。うっかり「オリジナルファイル」を削除してしまわないように(回答の投稿の前にテストで削除が実行されてしまい、マクロを最初から書き直ししたウッカリさんがここに居ます)
なお、何をしているかと言うと
1.使用期限切れの日付をチェック
2.エクセルファイルが消えるまで、繰り返してデリートを試みて、エクセルファイルが消えたら自分自身も自己消去するバッチファイルを生成
3.使用期限の警告を表示
4.上記2で生成したバッチファイルを、非表示モードで実行
5.自分自身のエクセルファイルファイルを閉じる
と言う処理をしています。
エクセルファイル自身は、自分自身が開かれている限り自分自身を削除できませんが、バッチファイルは「実行中の自分自身を削除可能」なので、エクセルファイルとバッチファイル自身の削除をバッチファイルで行っています。
No.4
- 回答日時:
ThisWorkbookのOpenイベントに以下のコードを仕込むと、2014/12/23日になった時点で、開いた時に警告を出してから自己消滅します。
Private Sub Workbook_Open()
Dim ofn As String
Dim bfn As String
If Now() >= #12/23/2014# Then
ofn = ThisWorkbook.FullName
bfn = ofn & ".bat"
Open bfn For Output As #1
Print #1, "@echo off"
Print #1, ":loop"
Print #1, "del """ & ofn & """"
Print #1, "if exist """ & ofn & """ goto loop"
Print #1, "del """ & bfn & """"
Close #1
MsgBox "使用期限切れの為、使用できません"
Shell """" & bfn & """", vbHide
ThisWorkbook.Close
End If
End Sub
以前の回答にある「VBAコードの表示用にパスワードを付ける」と併用すると、コードを見られなくなるので、時限爆弾を回避する事はできません。
なお、起動時に「マクロを無効にする」を選ばれた時は上記の時限爆弾は機能しませんが、他のマクロも動かないなら実用にならないので、問題は無いでしょう。
No.3
- 回答日時:
こんにちは。
>エクセルファイルをそのエクセルファイル内のマクロで削除する方法
通常は、Windows Rights Management[WRM] で期限付きファイルにしてしまいます。
それが、正規の方法だと思います。
しかし、いわゆる「自爆マクロ」は、以下のようにして、可能だと思います。
>記述したマクロコードだけ削除させるのでよいです。
以下は、"Module1" を完全に消してしまいます。これは、乱用禁止のマクロです。(むろん、マクロが動くことが条件です)
また、1 は不要だと思いますが、2.は不可欠です。
1.VBEにおいてMicrosoft Visual Basic for Applications Extensibilityへの参照を追加する。
2.「VBAプロジェクト オブジェクトモデルへのアクセスを信頼する」オプションのセキュリティセンターを指定する。
つまり、1がネックになってしまいます。
その1をオンにしていないと、
実行時エラー [プログラミングによる Visual Basci プロジェクトのアクセスは信頼に欠けます]
というエラーが出ます。
1.をマクロでオンにすることはおそらくは可能ですが、非公開の禁断のテクニックです。
'//
'Module1 にこのマクロを置きます。
Private Const LIMIT_DATE As Date = #12/19/2014#
Sub Auto_Open()
If Date = LIMIT_DATE Then
Application.OnTime Now + TimeValue("00:00:01"), "ThisWorkbookSave" '*
Call DeleteModule
End If
End Sub
Sub DeleteModule()
With ThisWorkbook.VBProject.VBComponents
.Remove ThisWorkbook.VBProject.VBComponents("Module1")
End With
End Sub
'Module2 (以下はなくても良い、その場合は、[*]のコードを抜く)
'これは、変更が加えられたことを気づかせないためのマクロ
Private Sub ThisWorkbookSave()
ThisWorkbook.Save
ThisWorkbook.Saved = True
End Sub
'//
[テスト済み]起動とともに、日付が合えば、削除します。
他にも、おそらく、かなり古いテクニックを使って、自分自身のファイルを削除するマクロは可能だと思います。想像だけで、やったことはありません。もう、そうなるとウィルスを作るようなものです。
Windows Rights Management[WRM]期限付きファイルを知らなかったので、早速色々と調べてみます。
正規な方法でできれば、この方法を活用したいと思います。
No.1
- 回答日時:
に従ってマクロを見られない状態にすれば、マクロのコードを見るのにパスワードが必要になります。
「見れない状態」であれば、削除する必要は無いし、パスワードさえ漏らさなければ流用される事もありません。
因みに「マクロ実行中のエクセルのブック」は「ファイルが排他モードでオープンされている」ので、自分自身のブックファイルを削除しようとすると「アクセス違反」でエラーになり、削除は不可能です。
ご回答ありがとうございます。
マクロ実行中のブックでは、ダメなのですね。参考になりました。
パスワードという選択肢も考えたのですが、「パスワードさえ漏らさなければ」ということが少し問題になって、削除できればと考えました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行すると メッセージボックスが表示されて okをク 4 2023/07/05 19:32
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/10 14:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/10/03 09:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
- Excel(エクセル) 2つのマクロを連続して動かしたい 3 2022/09/20 23:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/07/13 12:31
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/04 10:48
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
マクロでマクロを削除する
Excel(エクセル)
-
-
4
EXCELマクロでのThisisWorkbookの削除をしたいです。
Visual Basic(VBA)
-
5
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
6
マクロを消すマクロは不可能?
Excel(エクセル)
-
7
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
8
開いているファイルを削除し、別名で保存する方法
Visual Basic(VBA)
-
9
エクセルで使用期限付きのブックを作成したい
Excel(エクセル)
-
10
Excelファイルに有効期限を設定できませんか
Excel(エクセル)
-
11
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
12
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
13
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
14
Application.Runエラー(1004)
Excel(エクセル)
-
15
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
16
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
17
Excel-vba 文字列と変数を連結して更に変数として扱いたい
その他(プログラミング・Web制作)
-
18
VBAで文字を反映させると255文字の制限になってしまいます。
Visual Basic(VBA)
-
19
エクセルVBAの自己消滅で
Excel(エクセル)
-
20
ExcelのVBAでフォームが表示されない
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAを一度起動するとずっと出て...
-
コピーしたファイルのマクロを...
-
マクロを消すマクロは不可能?
-
excelファイルに使われているVB...
-
マクロでマクロを削除する
-
エクセルファイルを自身のファ...
-
エクセル終了時の保存確認メッ...
-
外部データを取り込むマクロ
-
【マクロ】宣言は、何のために...
-
昨日まで動いていたエクセルの...
-
excelでpersonal.xlsを常に開く...
-
Excelマクロ ファイル名が変わ...
-
エクセルで、ハイパーリンクを...
-
マクロを設定したのに、拡張子...
-
excelが別プロセスで起動してし...
-
エクセルで右クリックすると変...
-
EXCEL マクロ クリップボードク...
-
エクセルマクロにてパワーポイ...
-
【マクロ】エラーが発生⇒実行時...
-
エクセルの関数を使って、セル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを一度起動するとずっと出て...
-
コピーしたファイルのマクロを...
-
エクセル終了時の保存確認メッ...
-
昨日まで動いていたエクセルの...
-
VBA マクロ実行時エラー’1004Ra...
-
excelファイルに使われているVB...
-
Excelが勝手にシート移動してし...
-
別のパソコンでエクセルのマク...
-
【マクロ】エラーが発生⇒実行時...
-
EXCEL マクロ クリップボードク...
-
マクロを消すマクロは不可能?
-
Excelマクロ ファイル名が変わ...
-
excelが別プロセスで起動してし...
-
アクセスでファイルを開いたと...
-
エクセル2013vbaで、見えない名...
-
エクセルファイルを自身のファ...
-
excelのマクロ実行でブロックさ...
-
エクセルマクロ実行中に別ファ...
-
マクロを設定したのに、拡張子...
-
マクロでマクロを削除する
おすすめ情報