指定したディレクトリのExcelのファイル名とシート名を表示する

フォルダ名はその配下のファイル・フォルダの内容を要約した名前に設定することが多いと思います。同じようにファイル名はそのファイルの内容を示していることが多いです。つまり、フォルダ名やファイル名をdirコマンドなどで列挙すると目次としての役割を果たすことが出来るかもしれません。Excelファイルの場合はさらにシート名があります。しかし、dirコマンドなどでは表示することができません。そこで、指定したディレクトリのExcelのファイル名とシート名を表示するシェルを作成しました。

set-PSDebug -strict
# --------------------------------------
# 指定したディレクトリのExcelのファイル名とシート名を表示する
# 第一引数:フォルダパス
# --------------------------------------
Function GetExcelSheetName{
    # フォルダパス取得
    param([string]$fpath)
    
    # フォルダパス編集
    $wk = $fpath.substring($fpath.length - 1, 1)
    if ($wk -ne "\"){
        $fpath += "\"
    }
    $fpath += "*"
    
    # Applicationオブジェクト作成
    $excel = new-Object -com Excel.application
    $excel.visible = $false
    
    # excel ファイル名取得
    $fnames = get-childitem $fpath -include *.xls,*.xlsx
    
    # ファイル数分ループ
    foreach ($f in $fnames){
        # ブックオープン
        $book = $excel.workbooks.open($f,0,$true)
        
        # ファイル名とシート名表示
        write-Host $f.name
        foreach ($s in $book.sheets){
            write-Host $s.name
        }
        write-Host ""
        
        # ブックを閉じる
        $book.close()
    }
    
    # excelを終了する
    $excel.quit()
}