エクセルから取得した番号をもとに、アップロードファイルを検索

Directory.GetFiles(“フォルダのパス”)やFor Each等を使用して、
エクセルから参照した番号に基づいたファイル名を含むPDFをアップロードする作業を考えています。途中まで作成したのですが、ループの部分が上手くいかず、ご教示下さい。

内容を簡単に書くと、以下の通りです(②~④でループ)
① 特定のフォルダに格納してあるエクセルを開き、必要な項目を取得
② 別のフォルダに格納してある、アップロード用のPDFファイルのパスを取得
③ ②から拡張子を除くPDFファイル名を取得
④ ③のファイル名に含めれている番号(エクセル内のものと同じ)とマッチングをかけて、
同一だった場合はそのままアップロード。異なる場合は、次のPDFファイルを検索。

whileを先にすると延々とループしてしまい、
for eachを先にすると一番最後に取得したファイルがアップロードされてしまいます。
ちなみに、PDFの名称はアンダーバーの後に番号が入力するようにしています。
test.xaml (56.4 KB)


%E7%84%A1%E9%A1%8C2

こんにちは。
見出しは、「Excelの番号でPDFファイルを探す」とありますが、説明内容は「PDFファイルの番号でExcelを探す」ようにも読み取れます。

ニーズとしては、Excelの番号でPDFを探す(=Excelに番号記載のないPDFファイルは存在してもアップロードしなくてよい、Excelに番号があってPDFファイルがない場合はエラー)ですかね。

たとえばこんな感じでどうでしょう。
・先にExcelファイルを全部読んで、1件ずつ番号を取得、番号を元にPDFファイル名を組み立てます。
・そのファイルの存在有無を[File Exists]アクティビティで判定。
(ここではvb.net のGetFileSystemEntries命令を使っています。ファイル名の一部分で存在有無を判定できます)
・ファイルが存在したら固有のアップロード処理

って感じです。
無理にファイルをマッチングさせないで、ファイル名を作ってPDFファイルの有無を確認するようなワークフローにしています。

yukino 様

回答ありがとうございます。
教えて頂いた内容に基づき、何とか作成できました。

1 Like