Help us understand the problem. What is going on with this article?

PowerShellでExcelとエクスプローラを操作してみた

初めに

前職の課長が「PowerShellはいいぞ」と言っていたので、簡単なスクリプトを作成することにしました。

PowerShell

PowerShell(パワーシェル)は、マイクロソフトが開発した拡張可能なコマンドラインインターフェイス (CLI) シェルおよびスクリプト言語である。引用:https://ja.wikipedia.org/wiki/PowerShell

PowerShellとはコマンドプロンプトの(ほぼ)上位互換です。
PowerShellを使えば、ファイル操作やMicrosoft Officeのサービス(ExcelとかPowerPointとか)の操作を自動化するようなプログラムが作成できます。

作ったもの

Excelの情報を読み込み、その情報をファイル名としたファイルを作成するプログラム

実践

  1. Excelファイルを開いておくwrite-excel_1.png

  2. 作成したスクリプト(のショートカット)をクリックするwrite-excel_2.png

  3. logファイルが作成されるwrite-excel_3.png

コード

#Get-ExcelBook関数
#現在開いているExcelファイルを捕まえ、
#ファイル名が$BookNameだった場合そのExcelファイルを返す
Function Get-ExcelBook($BookName){

    #=== 稼働中の Excel を捕まえる
    $ex = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Excel.Application")

    if ($ex -eq $null) { return $null }

    #=== Open中のWorkBookから目的のBookを見つける
    foreach ($bk in $ex.WorkBooks){
        if ($bk.Name -eq $BookName){
            return $bk
        }
    }
    return $null
}

$rb = Get-ExcelBook("testbook.xlsx")

#Excelファイルの親ディレクトリを取得
$rb_Parent_Dir = (Split-Path $rb.FullName -Parent) +"\"

#Excelファイルの最初のシートを取得
$sheet = $rb.worksheets.item(1)

#最後の行を取得
$max = $sheet.UsedRange.Rows.Count

#最後の行になるまで繰り返す
for ($i = 1; $i -le $max ; $i++)
{
    #(Ai,Bi)のデータを取得
    $col_1 = $sheet.Range("A"+$i).Value2
    $col_2 = $sheet.Range("B"+$i).Value2

    #filename = " 親ディレクトリ \ Ai Bi.log "
    $filename = $rb_Parent_Dir+$col_1 +" "+$col_2 +".log"

    #ファイル名のファイルを作成
    New-Item $filename
}

所感

他のプログラムを触ったことある人なら違和感なく使えると思った。
PowerShellではパイプラインを使うのがイケてるらしい。また何か作ってみたい。

参考

https://manamana.ddo.jp/blog/post/Excele38292e9968be38184e3819fe381bee381bee381a6PowerShell

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away