【Excel VBAで改行を含むStringを1行ずつ読み込む】

◆ 私の環境は以下のとおりです
  • 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)