StudioX ピボットテーブルを作成 をStudioで使用したい

いつもお世話になっております。

StudioXの「ピボットテーブルを作成」アクティビティを、通常のstudioで使用したいです。
そこで、以下教えてください。
・「ピボットテーブルを作成」を囲むExcelアプリケーションスコープは通常のstudioのものでも動きますか?StudioX用の「Excelファイルを使用」を使う必要がありますか?
・「ピボットテーブルを作成」のプロパティのソース、New table name、対象の指定の仕方を教えてください。(VBの式の書き方が分かりません)

以上、よろしくお願いいたします。

こんにちは

・「ピボットテーブルを作成」を囲むExcelアプリケーションスコープは通常のstudioのものでも動きますか?StudioX用の「Excelファイルを使用」を使う必要がありますか?

基本的には、このアクティビティに必要な型を入力するのに、既存のExcel Application Scopeでは
取ってこれないように思えますので、「Excelファイルを使用」が必要になると思います。

・「ピボットテーブルを作成」のプロパティのソース、New table name、対象の指定の仕方を教えてください。(VBの式の書き方が分かりません)

以下のような感じになると思います。

ありがとうございます。

ちなみに、Excelの使用している全範囲(可変)のセルをソースとして取得したい場合、どのように指定すればよろしいでしょうか。

こんにちは

データの配置状況や構造にもよると思いますが、例えば

テーブル名が定義されているなら

Excel.Table("テーブル1").Address

Excel.Table("テーブル1").FullRangeName

の返り値を使ってみる。

あるいは、テーブル名定義がなければ

Excel.Sheet("Sheet1").DataTableValue.TableName

でシート内の表を自動検出した範囲文字列が返ってきます。

このあたりを利用できそうか一度試してみてはと思います。

ありがとうございます。
テーブル名はないので、Excel.Sheet(“Sheet1”).DataTableValue.TableName を試してみましたが、
'String’から’UiPath.Excel.IWellDefinedReadRangeRef’への暗黙の型変換はできません。
というエラーになりました。
解消方法ありますでしょうか・・

こんにちは

Excel.Sheet(“Sheet1”).DataTableValue.TableName 

"Sheet1!A1:D6"

のような文字列が返ってきます。

当該項目は

Excel.Sheet("Sheet1").Range("A6:D10")

のようにしてあげる必要があるので、先の文字列から必要な部分を切り出してあげる必要があります。
結果として例えば

Excel.Sheet("Sheet1").Range(System.Text.RegularExpressions.Regex.Match(Excel.Sheet("Sheet1").DataTableValue.TableName,"[A-Z]+\d+:[A-Z]+\d+").Value)

のようにしてあげる必要があると思います。

ありがとうございます。
ご指示の通りで記述のエラーはなくなりました。
実行してみたところ、以下の処理の②までしか進まないのですが、何か原因わかりますでしょうか。
①「Excelファイルを使用」で指定のファイルを開く
②ピボットテーブル作成用のシートを新規作成
③ピボットテーブルを作成

よろしくお願いいたします。

こんにちは

上記だけの情報では判断がつかないです。もし可能なら実際のファイル(xamlやxlsx)を
含むプロジェクト全体を共有いただくと良いかもしれません。

こんにちは

まず、止まってしまっているように見える原因ですがExcel.Sheet(“Sheet1”).DataTableValue.TableName の処理が非常に低速なためのようです。

また正しく動作しない点もいくつかあって、上記式は絶対アドレスで返ってくるので

Excel.Sheet("Sheet1").Range(System.Text.RegularExpressions.Regex.Match(Excel.Sheet("Sheet1").DataTableValue.TableName.Replace("$",""),"[A-Z]+\d+:[A-Z]+\d+").Value)

が正しい式になります。(余分な$を削除して抽出しています)

ただこの方法は、速度に問題がありそうなので、Find First/Last DataRowアクティビティを
用いて、対象範囲文字列を生成したほうがよさそうです。

以上を盛り込みました以下添付しますので、ご参照ください。

Main.xaml (13.6 KB)

1 Like

ご丁寧にサンプルまでありがとうございます!
できました~~!

1 Like

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