フォルダに存在するエクセルをシートごとに出力する方法

こんにちは。初投稿です。

フォルダに存在するExcelを開いて、複数存在するシートをCSVファイルに出力する処理を作成しましたが
ファイルの出力がうまくいきません。
原因についてご教授頂けたら幸いです。

<フローの内容>
1、GetEnvironmetVariableで"CurrentDirectory"を取得
2、Assignで取得したフォルダから「Directory.GetFiles」でxlsxを取得してstringに格納
3、Assignで出力ファイルのカウントを初期化
4、Foreachのitemで上記2で取得した配列を処理
4-1、ExcelApplicationScopeで「item.string」を開く
4-1-1、ExcelReadRangeでシート1を「DetaTable1」読込
4-1-2、ExcelReadRangeでシート2を「DetaTable2」読込
4-1-3、「出力ファイルのカウント」を+1
4-1-4、「DetaTable1」を「出力ファイルのカウント.csv」を出力
4-1-5、「出力ファイルのカウント」を+1
4-1-4、「DetaTable2」を「出力ファイルのカウント.csv」を出力

<ファイルの状態>
Excelファイルが2つ、それぞれ同一名のシートが存在する。
プロジェクトと同じフォルダに存在する

<想定処理>
それぞれのExcelに存在するシートのCSVファイルが4つ出力される。
1.csv :Excel1のシート1が出力
2.csv :Excel1のシート2が出力
3.csv :Excel2のシート1が出力
4.csv :Excel2のシート2が出力

<実行結果>
後に処理されたExcelの2シートの内容がCSVに出力される
1.csv :Excel2のシート1が出力
2.csv :Excel2のシート1が出力
3.csv :Excel2のシート2が出力
4.csv :Excel2のシート2が出力

こんにちは

考え方自体は概ね良さそうですので、実装に問題があるような印象です。
何らかの形(xamlの添付や画像など)で実際の実装を提示してもらった方が良いのではと思います。

返信ありがとうございます。

添付させていただきました。
よろしくお願いします。

テスト.zip (62.4 KB)

こんにちは

繰り返しの部分ですが、ForEachではなく、Parallel ForEach(並列繰り返し)を使用しているのが原因かと思います。
一度通常のForEachを用いて実行してはと思います。

1 Like

返信ありがとうございます。

ForEachに変更したらうまくいきました。
ありがとうございます。大変助かりました。

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