Excelで、複数列のセルの書式設定をまとめて行いたいです。

UiPath StudioX 2022.4.3を使用しております。

Excelでセルの書式設定を行いたいです。
「セルを書式設定」アクティビティですと1列しか選択できないのですが
書式設定を行いたい列が多いため、1つのアクティビティでまとめて行いたいと考えています。

ex. 01商品コード/01単価/02商品コード/02単価/03商品コード/03単価 ~~~

例えば上記のようなヘッダーの列がある場合に
『商品コード』が含まれる列の書式設定を行うことはできますでしょうか?

ご教示いただけますと幸いです。よろしくお願いいたします。

こんにちは

アクティビティパッケージのバージョンにもよるかもしれませんが、カンマ区切りで複数行指定ができます。あらかじめ列の文字がわかっているのであれば例えば以下の様になると思います。

@Yoichi

ありがとうございます。
試してみたのですが、
Range(“B:B,D:D”)のB列のヘッダーが、なぜかD列の全行に書き込まれてしまいました。

指定したい列が100個ほどあるため、
もし可能でしたらヘッダーの文字列によって書式設定を行えると嬉しいです。

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

直接これらで指定することは出来ませんので、ヘッダ情報を元に範囲文字列を動的に作成すると良いかと思います。例えば以下になります。

strRange = String.Join(",",dt.Columns.Cast(Of DataColumn).Where(Function(dc) dc.ColumnName.Contains("商品コード")).Select(Function(dc) UiPath.Excel.Helpers.ExcelUtilities.ConvertColumnIndexToColumnLetter(dt.Columns.IndexOf(dc)+1)+":"+UiPath.Excel.Helpers.ExcelUtilities.ConvertColumnIndexToColumnLetter(dt.Columns.IndexOf(dc)+1)))

Range(“B:B,D:D”)のB列のヘッダーが、なぜかD列の全行に書き込まれてしまいました。

どのような状況でしょうか?基本的に書式の変更なので、データが書き込まれることはないと思いますが....

@Yoichi

CSVを読み込んだExcelを使用しているのですが
「dt」はどちらで設定したらよいでしょうか?
また、下部エラーの内容がわからないです。
知識不足で申し訳ございません。。

こんにちは

範囲読み込みアクティビティで読み込んだDataTableをdtとしています。
まずはこちらを使用してみてください。

@Yoichi
遅くなりすみません!

範囲読み込みアクティビティでDataTableをdtとしました。
下記エラーが残った状態です。

こんにちは

式中の DataColumn の部分を、System.Data.DataColumn にしてみてもらえますでしょうか?

@Yoichi

変更したところ、エラーがでなくなりました!ありがとうございます!

デバック実行してみたところ、下記エラーで止まってしまいました。。
これらは、ヘッダーに「商品コード」が含まれる列でした。

UiPath.Excel.ExcelException: 範囲 X:X,AF:AF,AN:AN,AV:AV,BD:BD,BL:BL,BT:BT,CB:CB,CJ:CJ,CR:CR,CZ:CZ,DH:DH,DP:DP,DX:DX,EF:EF,EN:EN,EV:EV,FD:FD,FL:FL,FT:FT,GB:GB,GJ:GJ,GR:GR,GZ:GZ,HH:HH,HP:HP,HX:HX,IF:IF,IN:IN,IV:IV,JD:JD,JL:JL,JT:JT,KB:KB,KJ:KJ,KR:KR,KZ:KZ,LH:LH,LP:LP,LX:LX,MF:MF,MN:MN,MV:MV,ND:ND,NL:NL,NT:NT,OB:OB,OJ:OJ,OR:OR,OZ:OZ,PH:PH,PP:PP,PX:PX,QF:QF,QN:QN,QV:QV,RD:RD,RL:RL,RT:RT,SB:SB,SJ:SJ,SR:SR,SZ:SZ,TH:TH,TP:TP,TX:TX,UF:UF,UN:UN,UV:UV,VD:VD,VL:VL,VT:VT,WB:WB,WJ:WJ,WR:WR,WZ:WZ,XH:XH,XP:XP,XX:XX,YF:YF,YN:YN,YV:YV,ZD:ZD,ZL:ZL,ZT:ZT,AAB:AAB,AAJ:AAJ,AAR:AAR,AAZ:AAZ,ABH:ABH,ABP:ABP,ABX:ABX,ACF:ACF,ACN:ACN,ACV:ACV,ADD:ADD,ADL:ADL,ADT:ADT,AEB:AEB は存在しません。 —> System.Runtime.InteropServices.COMException: HRESULT からの例外:0x800A03EC

こんにちは

範囲文字列が長すぎますかね。
原因の切り分けとして、例えば最初の2,3列、あるいは最後の2,3列を手書きで入力した場合、正常に動作するか、確認可能でしょうか?

ADT:ADT,AEB:AEB 

X:X,AF:AF

@Yoichi

一瞬書き換えられるのですが、
その上からヘッダーが全行に書き込まれてしまいます。

こちらテストデータでございますが、同じ現象になっております。
新しい空のタスク.zip (1.2 MB)

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

こんにちは

別データが書き込まれるのはバグの様です。2.16.2で解消されているようですので、
Excel.Activities packageを2.16.2以上にアップデートしてみてください。

@Yoichi

解決されました!
DataTableを分割して範囲を読み込みアクティビティを使用し
それぞれを書式設定することで、50前後の列ならまとめて書式設定できそうです。

ありがとうございました!

1 Like

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