5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【SetROBO】Excelの操作

Posted at

はじめに

こんにちは。社内PCのキッティングを担当している@Cheeeeeseです。
今回はExcelの操作をまとめました。

V2.0から操作できるようになったExcelですが、CSV操作みたいに専用の関数があるわけではないので、基本的には手動でやる操作をコード化する必要がありました。

環境

  • Windows 11 Pro 22H2 (64bit)
  • SetROBO for Kitting V2.0
  • Excel 2019

Excel操作方法

Excelの起動・新規Book作成

Excelは「EXCEL.exe」で起動ができます。
既にあるExcelファイルを開く場合は、そのパスで問題ないです。

SetROBO
//Excelを起動し、新規Bookを開く
PlayLib.ProcessStart("EXCEL.exe");
PlayLib.Sleep(1000);
PlayLib.Window("Excel").UIListItem("空白のブック").Click();

セルを選択

セルを操作するには「UIDataItem」を使用します。
セルの選択は記録が出来ました。

SetROBO
// 単体セルを選択(A1)
PlayLib.Window("Book1 - Excel").UIDataItem("A1").Click();

// 列を選択(B)
PlayLib.Window("Book1 - Excel").UIDataItem("B").Click();

// 行を選択(2)
PlayLib.Window("Book1 - Excel").UIDataItem("2").Click();

// 複数セルを選択(A2からB4)
PlayLib.Window("Book1 - Excel").UIDataItem("A2").Drag(10,10);
PlayLib.Window("Book1 - Excel").UIDataItem("B4").Drop(10,10);

セルに入力(テキスト)

入力は記録が出来ませんでした。
あと、一度入力したいセルを選択した後にInputしないと、別のところに入力されてしまうので、Inputの前に必ずClickを入れないといけないです。

SetROBO
// A1に入力
PlayLib.Window("Book1 - Excel").UIDataItem("A1").Click();
PlayLib.Window("Book1 - Excel").UIDataItem("A1").Input("テスト");

セルに入力(数式)

数式の入力も出来ました。
入力の後に必ず「Enter」の入力が必要です。

SetROBO
// A2に今日の日付を入力
PlayLib.Window("Book1 - Excel").UIDataItem("A2").Click();
PlayLib.Window("Book1 - Excel").UIDataItem("A2").Input("=TODAY(){Enter}");

複数行に入力

複数行に入力する場合は、ループ処理でできました。
上記の通り、Inputの前にClickは必須です。

SetROBO
// A1に入力
for(int i = 1; i <= 5; i++)
{
    PlayLib.Window("Book1 - Excel").UIDataItem("A" + i).Click();
    PlayLib.Window("Book1 - Excel").UIDataItem("A" + i).Input("A" + i + "に入力");
}

セルのコピー・切り取り・貼り付け

コピー、切り取り、貼り付けはキー操作で出来ます。

SetROBO
/**** A1をコピーしC4に貼り付け ****/
// A1を「Control + c」でコピー
PlayLib.Window("Book1 - Excel").UIDataItem("A1").Click();
PlayLib.Window("Book1 - Excel").UIDataItem("A1").Input("{Ctrl_Down}c{Ctrl_Up}");
// C4に「Control + v」で貼り付け
PlayLib.Window("Book1 - Excel").UIDataItem("C4").Click();
PlayLib.Window("Book1 - Excel").UIDataItem("C4").Input("{Ctrl_Down}v{Ctrl_Up}");

/**** A2を切り取り、C5に貼り付け ****/
// B1を「Control + x」で切り取り
PlayLib.Window("Book1 - Excel").UIDataItem("B1").Click();
PlayLib.Window("Book1 - Excel").UIDataItem("B1").Input("{Ctrl_Down}x{Ctrl_Up}");
// C5に「Control + v」で貼り付け
PlayLib.Window("Book1 - Excel").UIDataItem("C5").Click();
PlayLib.Window("Book1 - Excel").UIDataItem("C5").Input("{Ctrl_Down}v{Ctrl_Up}");

シートの追加

SetROBO
// 新しいシートを追加
PlayLib.Window("Book1 - Excel").UIButton("シートの追加").Click();

別のシートを選択

SetROBO
// Sheet2を選択
PlayLib.Window("Book1 - Excel").UITabItem("Sheet2").Click();

シート名を変更

SetROBO
// シート名を「Sheet2」から「シートA」に変更
PlayLib.Window("Book1 - Excel").UITabItem("Sheet2").DblClick();
PlayLib.Window("Book1 - Excel").Input("シートA");

名前をつけて保存

SetROBO
// 「名前を付けて保存」
PlayLib.Window("Book1 - Excel").UIButton("ファイル タブ").Click();
PlayLib.Sleep(1000);
PlayLib.Window("Book1 - Excel").UIListItem("名前を付けて保存").Click();
PlayLib.Sleep(1000);
PlayLib.Window("Book1 - Excel").UIButton("参照").Click();
PlayLib.Sleep(1000);
PlayLib.Window("名前を付けて保存").UIEdit("ファイル名:").Input(@"C:\SetROBO\SR_Excel.xlsx");
PlayLib.Sleep(1000);
PlayLib.Window("名前を付けて保存").UIButton("保存(S)").Click();

最後に

基本的に人が行う操作をコード化することは出来ました。
ただ、データをデータテーブルで取得したり、リストで取得したりはできないので、
CSVファイルを使用するかExcelを使用するかは考えなきゃいけなさそうです。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?