もくじ

taka



最新記事 by taka (全て見る)
- 『雑記』最近の私の話~ - 2019年9月26日
- 【動画】自作パソコン構成変更!ケースをNZXT H500に交換しました! - 2019年6月5日
- VBA 『Array関数』指定した要素で配列を作成する - 2019年5月23日
- 「動画」初完全ワイヤレスイヤホン『Jabra Elite Active 65t』 - 2019年5月17日
- VBA 日付で令和を簡単に判定してみよう - 2019年5月7日
ExcelVBAでデータの完全削除をしてみた【コマンドプロンプト】
どうもtakaです最近雨続きで気分が滅入っています(;´・ω・)
さて今回は多少趣向を変えて【ExcelVBAでデータの完全削除をしてみた】です。
データ削除とは何ぞや?と気になる方も多いかと思います、なのでまずはHDD(ハードディスク)のデータ削除の仕組みを少しだけ解説していきたいと思います!
データはごみ箱を空するだけでは削除できない!


というわけで、【データはごみ箱を空するだけでは削除できない】という事実をまずは頭に入れておいてください(;^ω^)
HDDにはデータが磁気によって書き込まれています、画面上でごみ箱を空にしたからといってその磁気データがまっさらになるわけではないのです(;´・ω・)
なのでPCを売却するときや友人に譲渡するときなど、大切なデータをごみ箱で処理したからと言って渡してはいけません(;^ω^)
ごみ箱を空にした程度では【フリーの復元ソフトでもほぼ100%復元されてしまうでしょう。】
ごみ箱を空にするという行為はデータに【ここに上書きしていいよという目印をつける】ようなものなのです。なので画面上では見えなくなっていてもHDDにはデータがしっかりと残っています(;^ω^)
この削除状態を【論理削除】といいます。
どうしたら復元を防ぐことができるのか?
さて、ではどうやって削除したらよいのか?
先ほど【ごみ箱を空にするという行為はデータにここに上書きしていいよという目印をつけるようなもの】とお伝えしました、なのでHDDにデータはほぼ残っています。
なら【上書きしていいいという目印のデータに全く意味不明なデータを上書きをする】
という対処をすればいいのです(笑)
データを削除する方法は複数存在しますがHDDを使用している場合はこの方法が用いられることが多いです。一番ポピュラーな方法でもあります。
このように削除することを【物理削除】といいます。物理削除は論理削除に比べて復元が困難なため削除する場合は注意が必要です。
スマートフォンなどで使用されているSSD(フラッシュメモリ)でのこの方法の効果はわかりません。
ExcelVBAからデータを削除する方法
さてここで一つ重要なお知らせがあります(;^ω^)
残念ながら【VBAとしてはデータを削除する】ような機能はありません(;´・ω・)では、どうするのか?
Windowsとしての機能を使用してデータを削除します!
Windowsには【コマンドプロンプト】という命令文を使ってWindowsの操作をおこなうためのツールがあります、今回はVBAでこの【コマンドプロンプト】を操作してデータ削除を行っていきます


今回のコードはOfficeTANAKA様の【MS-DOSコマンドの標準出力を取得する】のコードを参考に作成しました。
Sub sample() Dim WSH, wExec, sCmd As String Set WSH = CreateObject("WScript.Shell") sCmd = "cipher /w:〇:" '〇の部分に削除したいdriveを記入(cipher /w:C:)など Set wExec = WSH.Exec("%ComSpec% /c " & sCmd) Do While wExec.Status = 0 'コマンドが終了したか判定する DoEvents Loop Set wExec = Nothing Set WSH = Nothing End Sub
このコードはコマンドプロンプトで【cipher コマンド】を実行するだけなのでVBAでする必要は皆無ですが、それをあえてExcelVBAから実行するといいうのが面白いと思い試してみました(;^ω^)
このコードを実行するとコマンドプロンプトが起動します。実行後はVBAを停止してもコマンドは実行され続けます。
コマンドプロンプトの画面を閉じると中断できます。
この【cipher コマンド】は「米国国防総省準拠方式」という方式でデータの削除をします、これはドライブの空き容量に3回の上書きをすることで残っていたデータに上書きをするというものです。
- 0、0のデータを要領いっぱいに書き込む(いわゆるゼロフィル)
- 0xff、1のデータを要領いっぱいに書き込む
- 乱数、ランダムなデータを要領いっぱいに書き込む
この三回の上書きによってデータの復元を防止するというわけです。復元したとしてもよくわからないデータが復元されるだけなので(笑)
データ削除に関しては一般人だったらこれで十分だと思います。
1.三回もデータを書き込むのでHDDの要領によっては数時間かかる場合もあります。時間に余裕をもってご使用ください(;´・ω・)
2.これを実行したからと言って完ぺきに削除できるという保証はありません。
3.専門業者、一部有料復元ソフト、警察機関などの復元などでは復元されてしまう可能性はあります。
最後に
今回はWindowsの基本機能を使用しましたが、フリーソフトでも7回だったり32?36?回の上書きをすることができるソフトも存在します(;´・ω・)
どうしても心配な方はそういうソフトを使用することをお勧めします( ^ω^ )(まぁこれでも完ぺきとは言えないようですが)
確実なのは
- HDDを粉々に粉砕する(業者依頼)
- HDDに穴をあけてさらに焼却する(磁気データは熱に弱い)
かなーと思います(;^ω^)
フォロー・チャンネル登録お願いします
VBA以外についてのブログはこちら↓
https://yb-log.com/■Twitterフォロー
Follow @taka_pc1027■YouTubeチャンネル登録
コメントを残す