【Excel VBAで改行を含むStringを1行ずつ読み込む】
◆ 私の環境は以下のとおりです
◆ やりたかったことは、フォルダ配下のファイルをループして、ハッシュ値の一覧を作ることです
CertUtil
◆ というわけで、サンプルソースです
1. 宣言セクション
2. チェックサムの関数
3. メインの関数
◆ 結果です
ちょっとチカチカするけど、いい感じです(`・ω・´)!!
ソースです
チェックサム取得のサンプル.zip
参考にしたリンクです
FileSystemObjectの解説(目次)
第5回 WshShellオブジェクトの詳細(1) (3/4)
◆ 私の環境は以下のとおりです
- Microsoft Excel 2010 (14.0.7183.5000) SP2 MSO (14.0.7184.5000)
- Microsoft Visual Basic for Application 7.0
◆ やりたかったことは、フォルダ配下のファイルをループして、ハッシュ値の一覧を作ることです
C:\Users\kahal>certutil -hashfile C:\Users\kahal\test\test.log MD5 |
C:\Users\kahal>certutil -hashfile C:\Users\kahal\test\test.log MD5
MD5 ハッシュ (ファイル C:\Users\kahal\test\test.log):
6e1d82e9ca29d2c59e02fd70e8c91398 ☜☜☜ ここだけ抜き出したい
CertUtil: -hashfile コマンドは正常に完了しました。
C:\Users\kahal>
CertUtil
◆ というわけで、サンプルソースです
1. 宣言セクション
Dim row As Integer |
2. チェックサムの関数
'### チェックサム関数 Function checksum(target As String, row As Integer) Dim shell, result Set shell = CreateObject("WScript.Shell") Set result = shell.Exec("%ComSpec% /c CertUtil -hashfile """ & target & """ MD5") 'MD5チェックサムを取得 Do While result.Status = 0 'execが終了するまで待ち DoEvents Loop md5 = Split(result.stdout.readall, vbCrLf) 'CertUtilの結果を改行コードで分割 Cells(row, 2).Value = target 'ファイル名をはっつけ Cells(row, 3).Value = Trim(md5(1)) 'MD5チェックサムをはっつけ Set shell = Nothing Set result = Nothing End Function |
3. メインの関数
'### メイン関数 Function main(Optional folder As String = "dummy") '### 初期処理 If folder = "dummy" Then Range("B5:C65536").ClearContents '貼り付けエリアをクリア row = 5 '貼り付けエリアの先頭行 folder = Cells(2, 3).Value 'フォルダ名を取得 End If '### フォルダの存在チェック exist = dir(folder, vbDirectory) '存在しない場合は空白が戻る If exist = "" Or folder = "" Then MsgBox ("フォルダが存在しません") Exit Function '存在しなかったら終了 End If '### メイン処理 With CreateObject("Scripting.FileSystemObject") For Each file In .getfolder(folder).Files '直下のファイルをひとつずつ見つけて、 Call checksum(folder & "\" & file.Name, row) 'チェックサム関数になげる row = row + 1 '貼り付け位置をひとつしたへ Next file '### 再帰的な処理 For Each subfolder In .getfolder(folder).subfolders 'サブフォルダをひとつずつ見つけて、 main (subfolder) '再帰的に実行 Next subfolder End With End Function |
◆ 結果です
ちょっとチカチカするけど、いい感じです(`・ω・´)!!
ソースです
チェックサム取得のサンプル.zip
FileSystemObjectの解説(目次)
第5回 WshShellオブジェクトの詳細(1) (3/4)