ExcelVBAでデータの完全削除をしてみた【コマンドプロンプト】

ExcelVBAでデータの完全削除をしてみた【コマンドプロンプト】

どうもtakaです最近雨続きで気分が滅入っています(;´・ω・)

さて今回は多少趣向を変えて【ExcelVBAでデータの完全削除をしてみた】です。

データ削除とは何ぞや?と気になる方も多いかと思います、なのでまずはHDD(ハードディスク)のデータ削除の仕組みを少しだけ解説していきたいと思います!

データはごみ箱を空するだけでは削除できない!

というわけで、【データはごみ箱を空するだけでは削除できない】という事実をまずは頭に入れておいてください(;^ω^)

HDDにはデータが磁気によって書き込まれています、画面上でごみ箱を空にしたからといってその磁気データがまっさらになるわけではないのです(;´・ω・)

なのでPCを売却するときや友人に譲渡するときなど、大切なデータをごみ箱で処理したからと言って渡してはいけません(;^ω^)

ごみ箱を空にした程度では【フリーの復元ソフトでもほぼ100%復元されてしまうでしょう。】

ごみ箱を空にするという行為はデータに【ここに上書きしていいよという目印をつける】ようなものなのです。なので画面上では見えなくなっていてもHDDにはデータがしっかりと残っています(;^ω^)

この削除状態を【論理削除】といいます。

どうしたら復元を防ぐことができるのか?

さて、ではどうやって削除したらよいのか?

先ほど【ごみ箱を空にするという行為はデータにここに上書きしていいよという目印をつけるようなもの】とお伝えしました、なのでHDDにデータはほぼ残っています。

なら【上書きしていいいという目印のデータに全く意味不明なデータを上書きをする

という対処をすればいいのです(笑)

データを削除する方法は複数存在しますがHDDを使用している場合はこの方法が用いられることが多いです。一番ポピュラーな方法でもあります。

このように削除することを【物理削除】といいます。物理削除は論理削除に比べて復元が困難なため削除する場合は注意が必要です。

注意点
スマートフォンなどで使用されているSSD(フラッシュメモリ)でのこの方法の効果はわかりません。

ExcelVBAからデータを削除する方法

さてここで一つ重要なお知らせがあります(;^ω^)

残念ながら【VBAとしてはデータを削除する】ような機能はありません(;´・ω・)では、どうするのか?

Windowsとしての機能を使用してデータを削除します!

Windowsには【コマンドプロンプト】という命令文を使ってWindowsの操作をおこなうためのツールがあります、今回はVBAでこの【コマンドプロンプト】を操作してデータ削除を行っていきます

 

今回のコードはOfficeTANAKA様の【MS-DOSコマンドの標準出力を取得する】のコードを参考に作成しました。

このコードはコマンドプロンプトで【cipher コマンド】を実行するだけなのでVBAでする必要は皆無ですが、それをあえてExcelVBAから実行するといいうのが面白いと思い試してみました(;^ω^)

注意点
このコードを実行するとコマンドプロンプトが起動します。実行後はVBAを停止してもコマンドは実行され続けます
コマンドプロンプトの画面を閉じると中断できます。

この【cipher コマンド】は「米国国防総省準拠方式」という方式でデータの削除をします、これはドライブの空き容量に3回の上書きをすることで残っていたデータに上書きをするというものです。

  1. 0、0のデータを要領いっぱいに書き込む(いわゆるゼロフィル)
  2. 0xff、1のデータを要領いっぱいに書き込む
  3. 乱数、ランダムなデータを要領いっぱいに書き込む

この三回の上書きによってデータの復元を防止するというわけです。復元したとしてもよくわからないデータが復元されるだけなので(笑)
データ削除に関しては一般人だったらこれで十分だと思います。

注意点
1.三回もデータを書き込むのでHDDの要領によっては数時間かかる場合もあります。時間に余裕をもってご使用ください(;´・ω・)
2.これを実行したからと言って完ぺきに削除できるという保証はありません。
3.専門業者、一部有料復元ソフト、警察機関などの復元などでは復元されてしまう可能性はあります。

最後に

今回はWindowsの基本機能を使用しましたが、フリーソフトでも7回だったり32?36?回の上書きをすることができるソフトも存在します(;´・ω・)
どうしても心配な方はそういうソフトを使用することをお勧めします( ^ω^ )(まぁこれでも完ぺきとは言えないようですが)

確実なのは

  1. HDDを粉々に粉砕する(業者依頼)
  2. HDDに穴をあけてさらに焼却する(磁気データは熱に弱い)

かなーと思います(;^ω^)

ブログの購読・ブログランキング

 

【E-VBA】の更新通知を受け取る場合はこちら↓


【E-VBA】はブログランキングに登録しています(∩´∀`)∩

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

人気ブログランキングへ

ファイルやコードの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

あることがキッカケでVBAを独学で勉強している、非IT企業の会社員。 今はVBAで出来ることを模索しながら別の開発言語の取得、基本情報技術者試験合格が目標