PADアクション:Excelワークシートに書き込む

PAD アクション説明
Robo1号
Robo1号

2号さん!Excelから読み取るのはできるようになったけど、今度は「書き込み」がしたいんです!結果をExcelに残せないと上司に報告できません…

Robo2号
Robo2号

読めたら次は書く、自然な流れですね。今回は、「Excelワークシートに書き込む」のアクションを説明していきます。Excelを使った自動化では、ほぼ必ず登場するアクションです。

アクションの位置

左側のアクション一覧から 「Excel」→「Excelワークシートに書き込む」 を選びます。

アクション名をダブルクリックするか、フローデザイナーへドラッグ&ドロップで追加できます。

アクション設定画面

項目内容
Excelインスタンス書き込み先のExcel。「Excelの起動」や「実行中のExcelに添付」で作った変数(%ExcelInstance%)を指定します
書き込む値書き込みたい文字・数値・変数。データテーブルを渡すと表ごとまとめて書き込めます
書き込みモード「指定したセル」か「現在のアクティブなセル」を選びます
列列番号(1,2,3…)または列名(A,B,C…)。指定したセルのときに使います
行行番号。指定したセルのときに使います
Robo2号
Robo2号

列は「1」でも「A」でもOKです。ループで列を動かしたいときは数字、決め打ちのときはアルファベットにすると読みやすいですよ。

使い方①:指定したセルに書き込む

A1セルに「Robo1号参上」と書き込んでみます。

  • 書き込む値:Robo1号参上
  • 書き込みモード:指定したセル
  • 列:A 行:1

使い方②:データテーブルをまとめて書き込む

「Excelワークシートから読み取る」で取得したデータテーブル(%ExcelData%)を、そのまま別のExcelのA1に渡すと、表全体を一度に貼り付けできます。

1セルずつループで書くより圧倒的に速いので、データ量が多いときはこちらがおすすめです。

Robo1号
Robo1号

えっ、ループいらないんですか!?いままで1000行ぐるぐる回してました…

Robo2号
Robo2号

どうりでRobo1号のCPUが熱くなるわけです。1行ずつ書くと、その都度Excelとやりとりが発生しますからね。

コピペ用フロー

下のテキストをコピーして、PADのフローデザイナーに貼り付ければ再現できます。新しいExcelを開き、A1に文字、B1に今日の日付を書き込んで終わります。

動作確認はVer2.73です。

Excel.LaunchExcel.LaunchUnderExistingProcess Visible: True Instance=> ExcelInstance
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: $'''Robo1号参上''' Column: $'''A''' Row: 1
DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateOnly CurrentDateTime=> CurrentDateTime
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentDateTime Column: $'''B''' Row: 1

うまく動かないときは

  • 「Excelインスタンスが無効」と出る:書き込みの前に「Excelの起動」か「実行中のExcelに添付」が入っているか確認しましょう。
  • 違うシートに書き込まれる:書き込み前に「アクティブなExcelワークシートの設定」でシートを指定します。
  • 日付が数字(45000など)になる:Excel側のセルの書式が「標準」になっています。セルの書式を日付に変えるか、「日時をテキストに変換」で文字にしてから書き込みましょう。

Robo1号の感想

Robo1号
Robo1号

読んで、書いて、保存する。これでExcel三兄弟がそろいました!データテーブルで一気に書けるのは目からウロコ…いや、目からネジです!

タイトルとURLをコピーしました