DataTableから特定の列を抽出したい

UiPath初心者です。

データテーブルから特定の列を抽出してエクセルに列ごと貼りたいです。

https://nade-nadegata.hatenablog.jp/entry/2019/02/18/223008
上記の方法を試しましたが、『列"列名"は基になるテーブルData Tableに属していません』というエラーが出ました。
上記URLで言う列名はDataTableとして指定した範囲の1行目ということではないのでしょうか?
ちなみにExcelのDataTableとして指定した範囲はExcel内でテーブル化していて、DataTableの1行目に当たる行は列1~からテーブルの最終列まで列番号が入っているので、代入で『dt=dt.DefaultView.ToTable(False,“列1”)』としました。

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

1 Like

元のDtから.ToTableする先を、同じDtではなくて、違うDtにしてみたらいかがでしょう?例えば
変数タブで…DT2(DataTable型)

DT2 = New DataTable
DT2 = dt.DefaultView.ToTable(False,“列1”)

のように。。。

こんにちは

「データテーブルをフィルター」アクティビティを使うのが簡単かと思います。

ウイザードで出力列に、列名がNGとなるようでしたら列番号を指定してみてください。
行の方は何も指定しなくても大丈夫かと思います。

img20210322-3

2 Likes

試してみましたが同じエラーが出ました。
そもそも変数はあとから代入されたものが上書きされていく認識だったので同じ変数をよく使いまわしていたんですが、違うDtにするのは同じDtに上書きされるのと何が違うのでしょうか?

このやり方を思いつかなかったです・・
解決出来ました!ありがとうございました!

1 Like

解決したんですがもう1つ質問がございまして・・
下記のやり方が上手くいかなかった原因はなんでしょうか?

繰り返し各行でrow in dtで、本体内で、
代入『idx_最終行=cint(str_行)』
範囲に書き込みの範囲を『“A”&idx_最終行』、値を『row(1).ToString』

こんにちは

情報が部分的なのでこれだけでは、処理内容・目的等よくわかりません。(str_行 が何か等々)
可能でしたらワークフローを添付いただく等を検討ください。

代入『idx_最終行=cint(str_行)』は忘れて下さい。
DataTableの最終行を『idx_最終行』の変数でとっていただけです。
Excelアプリケーション内に繰り返し各行を入れて、『row in dt』にして、その中でセルに書き込みのアクティビティを使って、範囲を『“A”&idx_最終行』、値を『row(1).ToString』にした感じです。
やはりワークフローがないと厳しいでしょうか・・?
仕事で使用しておりますので抜粋しづらくて・・

こんにちは

本来どのような結果を期待していて、現在の実装ではこうなってしまう
あるいはこのようなエラーが出てしまう。
といった点を共有いただけると良いと思います。

こんにちは。
様子がわからないながら、投稿します。
全く違っていたらすみません。

繰り返し各行なので、範囲に書き込みではなく、セルに書き込みが目的に合っているのかと思い、トライしました。

繰り返し各行はコレクションにDATA table変数を入れています。
最終行は特に使いませんでした
繰り返し各行の本体の中に
セルに書き込みアクティビティを入れ、セルには"D"+cnt.Tostringを入れました

cntはint32型の変数
繰り返し各行のプロパティの現在のインデックスで予め設定しておき、cnt+1を代入で作っておきます。繰り返しの本体の中です。

結論としてエクセルに記載できました。ただ、データが少量でもものすごく時間がかかったので、次に、アクティビティのセルに書き込み、はやめて、

別のデータテーブル変数を代入で、cloneで作りました。
位置は繰り返しより上で、最初のあたりです。

繰り返し処理の中では、代入が上手くいかなかったので、データの行を追加アクティビティを使って、cloneしたデータテーブルに追加していきました。

繰り返し処理の後に、データテーブルをエクセルに吐き出して成功した感じです。ここで、範囲に書き込みを使いました。

目的とは少し違うかもしれませんが、ご参考まで。

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