• ベストアンサー

csv内にサブフォルダー内のファイル名を抽出する方

csvのA列にアイテム番号が記載されております。 また、とあるフォルダーにアイテム番号になった名前のサブフォルダーが複数ございます。 しかし、フォルダ内の画像ファイル名が不規則となっているので、アイテム番号とサブフォルダ名が一致したらb列以降に抽出したいのですが、どのようにしたらよろしいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (715/1477)
回答No.1

指定フォルダのファイル名を読み、フォルダなら、A列を検索。見つけたらB列に書き込むプログラムです。完全一致です。 csv ファイルをExcel で開いてから実行してください。 PathNameはとあるフォルダーに変更して下さい。 ' Option Explicit ' Sub Macro1() '   Const PathName As String = "C:\Users\MA\Desktop\My Documents"   Dim FileName As String   Dim Attr As Integer   Dim FRange As Range   Dim Row As Long '   Columns(2).ClearContents   FileName = Dir(PathName & "\*.*", vbDirectory) '   While FileName > ""     Attr = GetAttr(PathName & "\" & FileName) And vbDirectory '     If Attr > 0 Then       Set FRange = Columns(1).Find(FileName, LookAt:=xlWhole) '       If Not FRange Is Nothing Then         Row = Row + 1         Cells(Row, "B") = FileName       End If     End If     FileName = Dir   Wend End Sub 「フォルダ内の画像ファイル名が不規則」というのが意味不明でした。やりたいことはこうではないのかもしれません。違っていたら何をしたいのか詳しく書いて下さい。

saya100111
質問者

お礼

再度質問いたします。

saya100111
質問者

補足

補足です。 C:\Users\Owner\Downloads\通販素材\tsuhan_jp_5028_2018-02-26\setting_000002016 のフォルダに 現在3つのサブフォルダーがございます。 たとえば、 1006 2001 1223 というものがあったとして、そのファイルの中身の画像ファイル名が 000033340_0001.jpg、000033340_0002.jpg、000033340_0003.jpg のように不規則になっております。 ネットショップで商品を一括で登録する際に、csv上に画像ファイル名を記載する必要があるのでサブフォルダー名が一致したらファイル内のファイル名を抽出する方法についての質問でした。

関連するQ&A

  • 複数のサブフォルダー内のファイル名を抽出したい

    分かりやすく完成形のイメージをキャプチャーしたのでご覧ください。 ネットショップで商品を一括登録する際に添付画像のように J~N列に画像ファイル名を記載する必要がございます。 キャプチャー画像では一つのアイテム番号を例にしておりますが、この番号がサブフォルダー名になっており C:\Users\Owner\Downloads\通販素材\tsuhan_jp_5028_2018-02-26\setting_000002016 に保存されております。 実際に説明いたします。 アイテム番号111621のファイル名がもし111621.jpg,111621-1.jpg,111621-2.jpg であればエクセルの関数でも対応できるのですが、 000033340_0001.jpg、000033340_0002.jpg、000033340_0003.jpgのように不規則になっているので、このような場合の画像ファイル名を抽出させるにはどのようにすればよろしいでしょうか?

  • 一致したファイル名を先頭に抽出させる方法

    Sub Sample() sPath = "C:\Users\Owner\Downloads\base\setting_000002016\" nRow = 2 sSubFol = Cells(nRow, 1).Text Do While sSubFol <> "" nCol = 11 sFileName = Dir(sPath & sSubFol & "\*.jpg") Do While sFileName <> "" Cells(nRow, nCol) = sFileName sFileName = Dir() nCol = nCol + 1 Loop nRow = nRow + 1 sSubFol = Cells(nRow, 1).Text Loop End Sub こちらは、指定の商品番号と同じ商品番号の名前になっているサブフォルダ名のファイル名をK列以降に抽出するというvbaでつくられたプログラムです。 実際の例で説明いたします。 商品番号が123、サブフォルダ名123だとして、 ファイル名が001.jpg,002.jpg.003.jpg,123.jpgという不規則なファイル名があったとします。 上記のプログラムはファイル名の順番問わず K列から順番に001.jpg,002.jpg.003.jpg,123.jpgに抽出されるようになっております。 しかし、仮名のファイルですが、123.jpgというファイル名が最初の列に抽出されたほうがこちらとしましても都合がいいので、同じ名前のファイルがあったら先頭に抽出できるようにしたいのですがどのようにしたらよろしいでしょうか?

  • csvファイルを開かずに文字を検索し行を抽出したい

    フォルダの中に複数のCSVファイルが有ります。 これらのファイルを開かずに文字列を検索し、検索対象の文字と完全一致する 文字がある行をまとめてひとつのファイルに抽出する方法を探しています。 例:Aフォルダ内にファイル1、ファイル2、ファイル3、、、と複数のファイルがある。 ファイルのフォーマットはすべてCSV。ファイルにはシートは一つのみ。日付なのですべて異なります。       A         B  C   D   E   F  G   H   I   J  K   L 加工年月日時分 品種 コード A列 B列 C列 D列 E列 F列 G列 本数 作業者    ・    ・    ・ A~Lまであり、Cのコードが指定した検索文字と完全一致するものを抽出したいです。 急ぎの内容の為、VBAやコマンドプロンプトなど、自分なりに色々なサイトにある プログラムを組み換えようとしましたが初心者の為すぐに理解して応用はとても 無理でした。知恵を貸して頂きたいです。

  • 特定フォルダからのファイル抽出

    特定のフォルダから、複数のファイルを抽出できる(カット)ようなツールを探しています。 例えば、CSVのファイルリストにあるファイル名のものをある特定のフォルダから切り取って他のフォルダに入れるなんてことができるツールがベストです。 知っている方いらっしゃったら情報ください。 よろしくお願いします。

  • エクセルVBAで、条件一致する値をcsvから抽出

    いつも大変お世話になっております。 初心者につき、ご教示いただけますと幸いです。 エクセルBook1というファイルに A列に地域番号・・・J列に個別番号 が入っています。 ※1行目に項目名などのヘッダーは持っていません。 その地域番号をファイル名に持ったcsvファイルがいくつもあり、 地域番号が一致するcsvファイルの中と突合させたいです。 ただし、Book1(エクセルファイル)のA列には 複数の地域番号があり、 その地域番号に適用するcsvファイルもそれぞれあります。 尚、csvファイルの構成は カンマ区切りのUTF-8で、 同じくヘッダーはありません。 1列目に地域番号、6列目に個別番号が入っています。 この地域番号+個別番号が一致し 且つ、53列目以降(より右列)に"■"という文字の有無 ※"■"の場所は、53列より右ということ以外、位置の決まりがありません。 更に、"■"が有る場合は、その2列先にある22桁の数字(半角文字列)を Book1のT列に転記(無い場合はスキップ) したいのですが、どのようにしたら実装可能でしょうか? うまく説明できておりませんでしたら 補足させていただきますので、 ご教示のほど よろしくお願い致します。

  • サブフォルダ名のみ検索したいのですができません。。

    複数のフォルダの中に複数の多くのファイルが入っています。ここで特定のファイルを 検索しようとすると、フォルダ名とファイルが重複しているため検索結果としていらない ものまで検索にひっかかってしまいます。例を説明しますと、155516というフォルダの 中に999 888 215 15516という画像ファイルが入っており、通常888で検索をすれば 888だけでてきますが、他に888というフォルダで中に159 111というファイルが入って いるフォルダがあるとすると、888で検索をかけると159と111のファイルも併せて結果に でてくる有り様です。。ファイル フォルダーの検索時に検索結果にサブフォルダーを 含めるというオプションはウィンドウズにありますが、 フォルダーの検索時に検索結果 にフォルダーを含めるというオプションはないため四苦八苦しております。 解決策としては、フォルダ名を全て変更する、フォルダからサブフォルダのみ抜き出して 検索をするという方法がありますが、それぞれフォルダ名もその中にファイルがあるにも 意味があるため、名前をかえたり場所を変えるといった手段はとれません。 また、DOSも職場パソコンにより権限がないため使用不可です。 お知恵を貸していただけると幸いです。。

  • エクセル2007VBAでフォルダ名とファイル名を

    取得したいのです。 あるフォルダ内にマクロのファイルと、複数のサブフォルダ及びその中の複数ファイルがあり 添付画像の通り、サブフォルダ名とファイル名、拡張子を取得したいのです。 どのようにすれば良いでしょうか、、ご教示下さい。

  • サブディレクトリ以下のファイルとフォルダを抽出

    著者名フォルダの中に作品書籍名フォルダがあります。著者名フォルダにはサブフォルダのみでファイルはありません。 作品書籍名フォルダには実データファイルがあるようなディレクトリ構造になっています。作品書籍名フォルダとその中身だけ抽出したいのですがどうすればよいでしょうか? 著者名フォルダという親フォルダを廃止するイメージです。ちなみに200件ほどあります。 よろしくおねがいします。

  • aaa.csvとbbb.csvを条件で抽出して並べたいです。

    aaa.csvとbbb.csvを条件で抽出して並べたいです。 $array = file("aaa.csv"); foreach($array as $line){ $line = explode("," , $line); if($line[1] == "0"){ $array = file("bbb.csv"); foreach($array as $item){ $item = explode("," , $item); if($item[2] == $line[0]){ $menu = $item[5]; } } } } aaa.csvの$line[1]が「0」のときbbb.csvの$item[2]と$line[0]が一致するものを表示させたいです。 素人ですいませんが教えてください。

    • 締切済み
    • PHP
  • 記載しているファイル名より、画像を抽出したい

    エクセルシートに記載している画像ファイルを、別のフォルダから抽出 する方法を教えてください 今、エクセルシートの A列の1行から1000行に画像のファイル名が記載されています これをtest.xlsxとします ここにはa列に下記のように記載されています ------------------------------------------- a1セルに0000a1.jpg a2セルに0000a2.jpg a3セルにxyz.jpg a4セルにopq.jpg ・ ・ ・ a1000セルにopqrst.jpg ---------------------------------------------- このようなものです そして、別の(例えばgazo)フォルダに、a1~a1000の画像を含んだ、 それ以外の画像も入っているgazouフォルダがあります これを別のフォルダー(gazou_newフォルダー)に 先のエクセルファイルa1~a1000に記載されている 画像を取り込みたいのですが・・・・ どのようにしたらよいでしょうか

専門家に質問してみよう