excelの複数ファイルを一つにする:Make multiple excel files one


#1

ファイル一覧より複数のexcelファイルを選択します。
New DirectoryInfo(wk_dir).GetFiles(".")
each forを利用して、New DirectoryInfo(wk_dir).GetFiles(".")で取得した複数excelファイルを指定のexcelファイルのシートにコピー・追記したいと思います。
どのようにすれば1つのファイルおよびシートに複数ファイル情報を格納できますか。
また、1つ目はヘッダーありと考えますが2つ以降の読み込んだexcelファイルのヘッダーは、不要にしたいと思います。よろしくお願いします。

Select multiple excel files from the file list.
New DirectoryInfo (wk_dir) .GetFiles ("*. “)
I would like to copy / append multiple excel files acquired with New DirectoryInfo (wk_dir) .GetFiles (”
. *") to the sheet of the specified excel file using each for.
How can I store multiple file information in one file and sheet?
Also, the first one seems to have a header, but I think that it is unnecessary to make headers of the excel files that have been read in and after.


複数のエクセルから一つのエクセルへ書き込む方法
#2

① [Merge Data Table] アクティビティを使って、[Read Range]で取得したデータテーブルを繰り返し連結する
https://activities.uipath.com/docs/merge-data-table
2件目以降の見出しはうまい具合に削ってくれるみたいです(実際にご確認ください)

② Excelを使って、[ Ctrl-C ] [Ctrl-V] でコピー&ペーストを繰り返して実現する

の、どちらかでしょうかね。
Excelのセル属性(色・背景色・書式など)も追記が必要な場合は②になります

①イメージ:


#3

yukino様
ありがとうございます。
itemのvariable typeは、何になるでしょうか。
また、DOのアクテビティは何を指定すればよいでしょうか。
UIPATH始め1か月弱の初心者ですのでご教示いただければ幸甚です。


#4

① 元の質問に[GetFiles(".")]で取得した複数Excelファイルを。。。との記載がありましたので、それでワークフローを組み立てて行くことにしたと理解しているのですが、相違ありますでしょうか?
GetFiles()は複数のファイル名を配列に入れて返すので、ここの変数は文字列になると思いますよ。

② Doのアクティビティは、私が貼った画像の繰り返しの中のことを指していますよね。
私は、「Merge Data Table」もしくは「Excelのキー操作」の方法があるとご提示したつもりなのですが、@Matrix99999 様はどちらでワークフローを組み立てていくことにされたのですか?
その方針によりDoの中身は異なりますので、まずはその判断を教えてください。


ちなみに、画像がブラウザ上切れているかもしれませんが、クリックすると全体像が表示されますので、クリックしてみてください。
また、私の返信はときどき画像をつけていますが、「こう作ってね」ではなく、「私が作るならこうです」
なので、是非 @matrix99999 さまの「このように作ってみたのだけど、どうかな?」を見せてくださいね。


#5

yukiko様
申し訳ございません。
こちらで作成してみましたが、each for で取得したファイルをループさせています。
しかし属性等が理解不足でエラーとなり戸惑っています。
ワークフローは、yukiko様の例示どおりに行いました。
よろしければ精査していただけないでしょうか。copy_excel.xaml (9.3 KB)


#6

copy_excel _yukino.xaml (11.9 KB)

軽くエラーを潰してみました。
変更した箇所はコメントを入れておいたので、確認いただけると。


#7

本当にお手数おかけしてしまいありがとうございます。
フォルダのファイル取得とアウトプットのexcelファイルを指定して実行しました。
こちらのミスと思いますがエラーがでます。
エラー内容:
copy_excel _20180606 has thrown an exception
Source: Merge data table

Message: Object reference not set to an instance of an object. This error usually occurs when using a variable with no set value (not initialized).

Exception Type: NullReferenceException

System.NullReferenceException: Object reference not set to an instance of an object.
at UiPath.Core.Activities.MergeDataTable.Execute(CodeActivityContext context)
at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.ActivityInstance.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

修正したxamlファイルも添付いたします。
再度ご教示いただけないでしょうか。
よろしくお願いします。copy_excel _20180606.xaml (13.1 KB)


#8

dt1の初期化がされていません。おそらく最初の1ループ時に、
dt1 (中身なにもなし)と dt2 (Excelから読み取ったデータ)をくっつけようとして、片方に何も入っていないのでエラーになっているようですね。

dt1,dt2に初期値をセットしたり、見出しだけのダミーデータを入れたり、いきなり本物のロジックを作らないで、ご自身でアクティビティ(今回はMerge Data Table)の動作を検証しつつ、理解した内容でシナリオを作っていくことをお勧めします。


#9

yukino様
忙しいところご教示いただきありがとうございます。


#10

色々ありがとうございました。
data tableに関して色々検証しました。
build data tableでdt01に空データを格納しdt01にデータがあるようにして、
Merge Data Tableで、dt01=dt01 + dt02としてwrite rangeで実態のexcelファイルに登録するように
しました。
本当に勉強になりました。
ありがとうございます。