kana612
(果奈)
1
いつもお世話になっております。
StudioXの「ピボットテーブルを作成」アクティビティを、通常のstudioで使用したいです。
そこで、以下教えてください。
・「ピボットテーブルを作成」を囲むExcelアプリケーションスコープは通常のstudioのものでも動きますか?StudioX用の「Excelファイルを使用」を使う必要がありますか?
・「ピボットテーブルを作成」のプロパティのソース、New table name、対象の指定の仕方を教えてください。(VBの式の書き方が分かりません)
以上、よろしくお願いいたします。
Yoichi
(Yoichi)
2
こんにちは
・「ピボットテーブルを作成」を囲むExcelアプリケーションスコープは通常のstudioのものでも動きますか?StudioX用の「Excelファイルを使用」を使う必要がありますか?
基本的には、このアクティビティに必要な型を入力するのに、既存のExcel Application Scopeでは
取ってこれないように思えますので、「Excelファイルを使用」が必要になると思います。
・「ピボットテーブルを作成」のプロパティのソース、New table name、対象の指定の仕方を教えてください。(VBの式の書き方が分かりません)
以下のような感じになると思います。
kana612
(果奈)
3
ありがとうございます。
ちなみに、Excelの使用している全範囲(可変)のセルをソースとして取得したい場合、どのように指定すればよろしいでしょうか。
Yoichi
(Yoichi)
4
こんにちは
データの配置状況や構造にもよると思いますが、例えば
テーブル名が定義されているなら
Excel.Table("テーブル1").Address
や
Excel.Table("テーブル1").FullRangeName
の返り値を使ってみる。
あるいは、テーブル名定義がなければ
Excel.Sheet("Sheet1").DataTableValue.TableName
でシート内の表を自動検出した範囲文字列が返ってきます。
このあたりを利用できそうか一度試してみてはと思います。
1 Like
kana612
(果奈)
5
ありがとうございます。
テーブル名はないので、Excel.Sheet(“Sheet1”).DataTableValue.TableName を試してみましたが、
'String’から’UiPath.Excel.IWellDefinedReadRangeRef’への暗黙の型変換はできません。
というエラーになりました。
解消方法ありますでしょうか・・
Yoichi
(Yoichi)
6
こんにちは
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)
のようにしてあげる必要があると思います。
kana612
(果奈)
7
ありがとうございます。
ご指示の通りで記述のエラーはなくなりました。
実行してみたところ、以下の処理の②までしか進まないのですが、何か原因わかりますでしょうか。
①「Excelファイルを使用」で指定のファイルを開く
②ピボットテーブル作成用のシートを新規作成
③ピボットテーブルを作成
よろしくお願いいたします。
Yoichi
(Yoichi)
8
こんにちは
上記だけの情報では判断がつかないです。もし可能なら実際のファイル(xamlやxlsx)を
含むプロジェクト全体を共有いただくと良いかもしれません。
Yoichi
(Yoichi)
10
こんにちは
まず、止まってしまっているように見える原因ですが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)
2 Likes
kana612
(果奈)
11
ご丁寧にサンプルまでありがとうございます!
できました~~!
1 Like
system
(system)
Closed
12
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.