2015-06-12

PowerShellでExcelを操作する - セルの操作編 -


PowerShellでは、Excelファイル(エクセル 拡張子xls、xlsx、xlsm等)を操作することもできます。

Excelファイルは、Officeソフトの中でも特に使用頻度が高く、業務で毎日使用しているという人も少なくないことと思います。

そんな毎日使用するものだからこそ、定型業務を自動化していきましょう!!


Excel操作 第3回目の今回は「PowerShellでExcelを操作する - セルの操作編 -」です。
指定したセルへの入力や、セルからの取得などの方法を書いていきます。



<前準備>

・Excel操作の過去記事をお読みいただき、C:\TESTフォルダ内に、AAA.xlsxというExcelファイルを作成していただくと、よりわかりやすいかと思います。

⇒ 過去の記事はこちら 【PowerShellでExcelを操作する - 基礎編 -
⇒ 過去の記事はこちら 【PowerShellでExcelを操作する - シートの操作編 -


それでは早速、例文を記述していきます。



---------ここから-------------------------------------------------------------------------------------

# Excel操作 セルの操作編


# Excelを操作する為の宣言
$excel = New-Object -ComObject Excel.Application

# 可視化する
$excel.Visible = $true

# 既存のExcelファイルを開く
$book = $excel.Workbooks.Open("C:\TEST\AAA.xlsx")

# ワークシートを番号で指定し、接続する
$sheet = $excel.Worksheets.Item(1)

# セルE2に文字列を入力
$sheet.Cells.Item(2,5) = "50"

# セルF2に文字列を入力
$sheet.Cells.Item(2,6) = "100"

# セルG2に数式を入力
$sheet.Cells.Item(2,7) = "=E10+F10"

# 上書き保存
$book.Save()

# Excelを閉じる
$excel.Quit()

# プロセスを解放する
$excel = $null
[GC]::Collect()

---------ここまで-------------------------------------------------------------------------------------

上記内容をコピーし、PowerShell ISEに貼り付けて、実行してみてください。

実行後、C:\TESTフォルダ内のAAA.xlsxを開くと、画像のように入力されると思います。


それでは1行ずつ解説していきます。
(コマンドが記述してある部分だけを数えて1行目、2行目…としています)


<解説>

◆1行目~4行目
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $true
$book = $excel.Workbooks.Open("C:\TEST\AAA.xlsx")
$sheet = $excel.Worksheets.Item(1)

この4行については割愛します。
内容がわからない場合は【PowerShellでExcelを操作する - 基礎編 -】をご覧ください。


◆5行目・6行目
$sheet.Cells.Item(2,5) = "50"
$sheet.Cells.Item(2,6) = "100"

5行目・6行目では、指定したセルに文字列を入力しています。
セル位置の指定方法については【PowerShellでExcelを操作する - 基礎編 -】をご覧ください。


◆7行目
$sheet.Cells.Item(2,7) = "=E10+F10"

7行目では、文字列ではなく、数式(計算式)を入力しています。

◆8行目~11行目
$book.Save() 
$excel.Quit()
$excel = $null [GC]::Collect()

この4行についても同様に割愛させていただきます。
内容がわからない場合は【PowerShellでExcelを操作する - 基礎編 -】をご覧ください。


例文の解説は以上となります。

続いてもうひとつ例文を記述します。

---------ここから-------------------------------------------------------------------------------------

# Excel操作 セルの操作編 その2

# Excelを操作する為の宣言
$excel = New-Object -ComObject Excel.Application

# 可視化しない
$excel.Visible = $False

# 既存のExcelファイルを開く
$book = $excel.Workbooks.Open("C:\TEST\AAA.xlsx")

# ワークシートを番号で指定し、接続する
$sheet = $excel.Worksheets.Item(1)

# セルG2の内容をテキストとして取得
$text1 = $sheet.Cells.Item(2,7).Text

# セルG2の内容を数式として取得
$Formula1 = $sheet.Cells.Item(2,7).Formula

# 上書き保存
$book.Save()

# Excelを閉じる
$excel.Quit()

# プロセスを解放する
$excel = $null
[GC]::Collect()

# メッセージボックスで、取得した2つの内容を表示
Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show("G7のテキストは $text1 です。`nG7の数式は $Formula1 です。", "結果")

---------ここまで-------------------------------------------------------------------------------------

上記内容をコピーし、PowerShell ISEに貼り付けて、実行してみてください。

下記画像の通り、メッセージボックスが表示されれば成功です。


ポイントを絞って、5行目・6行目のみ解説していきます。

<解説> 

◆5行目
$text1 = $sheet.Cells.Item(2,7).Text

5行目では、セルG7に入力された文字列を取得し、変数text1に格納しています。


◆6行目
$Formula1 = $sheet.Cells.Item(2,7).Formula

6行目では、 セルG7に入力された数式を取得し、変数Formula1に格納しています。

この2つの変数を最後にメッセージボックスで表示させています。

※メッセージボックスの使用については【PowerShellでMessageBoxを使用する】をご覧ください。


解説は以上となります。


PowerShellからExcelを操作するとき、数式を取得することはあまりないかもしれません。

しかし、大量のExcelファイルを開いて、固定セルの値を調べるなどの作業がある場合には上記をうまく活用すれば、作業効率が向上するかもしれません。


次回は「PowerShellでExcelを操作する - セルの操作編2 -」を投稿致します。

おおまかな内容は次の通りです。
  ・指定したセル範囲から文字列を取得
  ・指定したセル範囲のコピー&貼り付け

=======================================================================
本投稿に関する疑問や質問には可能な限りお答えさせていただきます。
お気軽にコメントやメールをお送りください。
(リクエストも歓迎します)
メール:tkk-powershell@gmail.com
また、間違いのご指摘・アドバイス等も歓迎いたします。
=======================================================================
Google+、Twitterで更新情報をお届けしています!
ぜひフォローをお願い致します!           
=======================================================================
スポンサーリンク


0 件のコメント:

コメントを投稿

疑問・質問・リクエスト お気軽にどうぞ (^O^)/