Excelシートの特定の範囲をクリップボードにコピーする方法

こんにちは。
UiPath Studio 2024.4.0 Community editionのユーザです。

UiPathでExcelシートの “Sheet3” の “B2:D3” の範囲をクリップボードにコピーする方法をCopilotに質問したら下記の回答が返ってきました。
Copilotの回答通り、一回Datatableに変換しないとだめでしょうか?それなら、最初に"Sheet3" の B2セルをクリックして後はキーボードショートカットで連続操作をした方が楽な気がします。

-----<ここから>-------
UiPathでExcelシートの特定の範囲をクリップボードにコピーするためには、以下の手順を実行します:

  1. Excel Application Scope アクティビティを使用してExcelファイルを開きます。“WorkbookPath” プロパティにExcelファイルのパスを指定します。

  2. Read Range アクティビティを使用してデータを読み取ります。“SheetName” プロパティに “Sheet3” を、“Range” プロパティに “B2:D3” を指定します。出力を DataTable 変数(例えば dt)に保存します。

  3. Output Data Table アクティビティを使用してDataTableをテキスト形式に変換します。“DataTable” プロパティに上記で作成したDataTable変数(dt)を指定します。出力を String 変数(例えば str)に保存します。

  4. Set to Clipboard アクティビティを使用してクリップボードにテキストを設定します。“Text” プロパティに上記で作成したString変数(str)を指定します。

以上の手順で、Excelの “Sheet3” の “B2:D3” の範囲のデータをクリップボードにコピーすることができます。ただし、この方法ではセル間の書式やスタイルは保持されません。あくまでテキストデータとしてクリップボードにコピーされます。ご了承ください。
-----<ここまで>-------

本件に関し、2点質問します。

1.Copilotの回答よりスマートな方法があればご教示ください。
2.“Sheet3” の B2セルをクリックする方法をご教示ください。クリックアクティビティでクリックするしかないでしょうか?WFの動作が不安定になる気もしますが。

こんにちは

どのような形式でクリップボードに保持したいのか、また後続でどのように使用したいかによって答えが変わります。まずはそれを明確にいただいた方が良いかと思います。

@gorby,

Try this solution using Copy/Paste Range activity.

Thanks,
Ashok :slight_smile:

範囲コピーしたあと、グラフ作成サイトの添付画像赤丸をクリック後Ctrl+Vで貼り付けます。

Hi @gorby

image

By using Linq query,

String.Join(Environment.NewLine, DT.AsEnumerable().Skip(1).Take(2).Select(Function(row) String.Join(",", row.ItemArray.Skip(1).Take(3))))

image

Regards,

上記のOutput DataTableアクティビティを使った出力ですとカンマ区切りでの出力になりますが、それでは上記サイトで正常に動作しないように思えます。

もしタブ区切りで動作するようでしたら、OutputDataTableの代わりに以下で出力した文字列を貼り付けた方が良いかもしれません。(動作確認が必要です)

String.Join(vbcrlf,dt.AsEnumerable.Select(Function(r) String.Join(chr(9),r.ItemArray)))

CopyPasteRangeXアクティビティのターゲットに"ExcelClipboardX.Value"と書けば範囲コピーの内容をClipboardにコピーできることが分かりました。UiPathに関する限り、Copilotよりもまだ人間の方が賢いようですね。自己解決案件とさせてください。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.