
Excelである文言の一覧があります。
特定フォルダからこの一覧を含むファイルを移動用フォルダを作成して移動したいと考えております。
■Excelファイル(A列)
AA111000
AA111002
■特定フォルダにあるファイル名
AA111000_りんご.pdf
AA111001_みかん.pdf
AA111002_ばなな.pdf
AA111003_いちご.pdf
■移動用フォルダ
不要
●希望結果(フォルダ構成)
AA111001_みかん.pdf
AA111003_いちご.pdf
不要
┗AA111000_りんご.pdf
┗AA1110002_ばなな.pdf
Excelにてバッチを含むVBAを作成して実行でも、
バッチファイルを手動で作成して実行でも構いません。
このような操作が可能かどうか、
可能であればどのようにすればよいか教えていただけないでしょうか。
No.5ベストアンサー
- 回答日時:
#1で想定したコードサンプルです
参考サイトなどと合わせて実行コード内の処理をステップ実行などで
確かめながら理解する方が早いかも知れませんしカット&トライの時代ではないのかも知れませんね。
Sub example()
Dim fso As Object, fol As Object, f As Object
Dim ary As Variant, i As Long
Dim strFolPath As String, strMoveFol As String
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then 'ダイアログでファイル郡のフォルタパスを取得
strFolPath = .SelectedItems(1)
Else
Exit Sub
End If
End With
strMoveFol = strFolPath & "\不要" '同じフォルダの移動フォルダ名(変更箇所)
Set fso = CreateObject("Scripting.FileSystemObject")
Set fol = fso.GetFolder(strFolPath) ' フォルダ
If Not fso.FolderExists(strMoveFol) = True Then
fso.CreateFolder (strMoveFol) '無ければ移動先フォルダ作成
End If
'キーワードリスト作成(2次元配列で作成)
With ActiveSheet 'アクティブシートのA1セルから最終行(変更箇所)
ary = .Range(.Cells(1, "A"), .Cells(.Rows.Count, "A").End(xlUp))
End With
For Each f In fol.Files ' フォルダ内のファイルを順次取得
For i = 1 To UBound(ary, 1) '配列内をループ
If f.Name Like ary(i, 1) & "_*" Then 'ファイル名をlikeでパターンマッチ
f.Move (strMoveFol & "\") '同名で移動
'Exit For 'アンダーバー前の値が複数ある場合適当でない
End If
Next
Next
Set fol = Nothing
Set fso = Nothing
End Sub
No.4
- 回答日時:
補足要求です。
1.excelファイル A列に
AA111000
AA111002
が、ありますが、A1からデータが開始していますか。
それとも、A1は見出しで、A2からデータが開始していますか。
2.上記のシート名は何でしょうか。
3.マクロを組み込むとすれば、上記のexcelファイルに組み込む
ことになりますが、よろしいでしょうか。
(組み込んだexcelファイルの拡張子はxlsmになります)
4.特定フォルダの直下に”不要”フォルダがあると理解しましたが、
間違いないでしょうか。
1)ExcelファイルはA1セルから開始しています。
2)VBAで「除外」という名前のシートを作成し、A1セルから該当する番号(AA111000など)を入れています。
3)マクロの組み込みは問題ありません。この手段以外にもマクロやVBAを組んでいるので問題はありません。
4)「不要」フォルダは存在します。
No.3
- 回答日時:
#1です
今一度、ご確認したいのですが、
例を見るとファイル名での振り分けになっていましたので
ファイル名を念頭に回答いたしましたが、確かに 文言 含むファイル・・
ファイル名で振り分けではないのですか?
ファイル内のドキュメント文字列が振り分け対象キーワードなのですか?
PDFの文字列を取得となると#2様が示されている通り Acrobat Proや
Pythonなどのライブラリーを使ったりする必要があると思います、保護の問題もあるかな・・
私の文言が分かりにくくて申し訳ございません。
PDFファイル内にもAA111000のような文言が含まれていますが、
PDFファイル名に含まれている場合のみで考えておりました。
※PDFファイル内に書かれている番号(AA111000)と
PDFファイル名が異なる場合は別手段でPicUPしております。
説明の補足でした。
No.2
- 回答日時:
こんにちは
試してみてはいませんけれど・・・
ファイル名ではなく、ファイル内の文書で文言の有無を検索するということですよね?
バイナリ形式のファイルだと、対応ソフトで開いてから検索しないと上手くいかないものと思われます。
(テキストファイルのみが対象ならバッチでも良いのでしょうけれど・・)
どのようなファイルが対象なのでしょうか?
Office系はそのままVBAでもなんとかなりますが、例示なさっているのがpdfなので・・
.psdや.aiなども対象なのでしょうか? まさか、画像ファイルは対象外とは思いますが・・
各ファイルを検索する際に、拡張子を調べ、それに応じたソフトで開き、検索ワードの有無を調べる必要がありそうに思われます。
そのために、まずは対象となりそうなファイルを列挙して、それぞれの検索方法を調べることになるでしょう。
この部分さえクリアできれば、後は単純に
『特定フォルダ内の各ファイルを順に検索して、キーワードが存在すれば移動用フォルダに移動』
というループに組み込めばよさそうですので。
docx、xlsx、pptx、txt、csv などに関しては(質問者様にとって)問題はないものと推測しますので、その他のファイルで、例えばご例示のpdfの場合には、
https://fastclassinfo.com/entry/vba_pdf_text_ext …
のような感じで検索が可能です。
それ以外のファイルの種類に関しても、同様に個別に処理を作成しておいて、拡張子によって振り分ければなんとかなるのではと思います。
残念ながら、全てのソフトが検索に利用できるdll等を用意してくれているとは限りませんので、難しい種類のものも存在するであろうと推測されます。
コード内に扱える拡張子を列挙しておいて、それ以外のファイルが存在した場合には、スキップするなどが必要になるのではないでしょうか。
ご回答ありがとうございます。
フォルダにPDFファイルが500個以上あり、
特定の名前が入っている約半数のファイルを除外したいというのが目的でした。
フォルダに入っているのはPDFファイルのみです。
除外リストはExcelに1セルずつ入っているので、
それをテキストに書きだしてバッチファイルと考えておりました。
No.1
- 回答日時:
こんにちは
>可能であればどのようにすればよいか教えていただけないでしょうか。
先ずは 可能です
キーになるワードのリストを作成して
リストでなくとも列範囲をループする処理で値を取得する方法も有ります
各キーワードを対象ファイル名と比較(instrやLike)などをしてTrueの場合に
CreateObject("Scripting.FileSystemObject").Move(移動元フルパス & \)
や
Name 移動元フルパス As 移動先フルパス のようにステートメントを実行する形になると思われます
対象ファイル名と比較する場合、フォルダー内すべてのファイルに対して繰り返し処理をする(Trueの特ファルダ内ループから一旦抜ける)
具体的なコードは、ご質問にコードなどの記載がなくご質問者様のスキルなどが不明の為割愛します
(実際に書いたコードなどを示されると躓いている箇所やアドバイスもし易いですね)
参考サイトでご確認ください
現場で使える! Excel/VBA実践ガイド
【VBA】ファイルを移動する【シンプル】
https://excel-vba.work/2020/11/23/%E3%80%90vba%E …
Tipsfound › Excel VBA › ファイルの移動
https://www.tipsfound.com/vba/18008
大体でIT -ちょっと使えるネタを紹介-
【VBA】Rangeで取得したセル範囲をループする【For Eachを使います】
https://daitaideit.com/vba-range-for-each/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Excel(エクセル) 【マクロ】ファイル名の日付によって、保管するフォルダを、自動選択したい 4 2023/08/16 11:24
- Excel(エクセル) excel 別のフォルダから列コピーする方法 8 2022/12/17 16:24
- PDF PDFを自動添付したメールを送信してくれるツールを探しています。 2 2023/02/07 15:19
- Excel(エクセル) 【VBA】フォルダAにある2つのファイルの内1つを、フォルダBへ。もう1つを、フォルダBへ移動したい 6 2022/07/26 08:51
- Excel(エクセル) フォルダAから1つのファイルだけを、フォルダBへを移動するVBAについて 2 2022/07/25 11:45
- Visual Basic(VBA) 【マクロ】フォルダにファイルが1つも無い時に、ファイルがありませんとメッセージを表示する 4 2022/08/28 08:48
- Excel(エクセル) 2つのマクロを連続して動かしたい 3 2022/09/20 23:46
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
煮物こんにゃくの冷凍保存について
-
7文字以上のフルーツをできるだ...
-
スポンジケーキってどのくらい...
-
中黒「・」か読点「、」か?
-
10年前のにんにく漬け、食べて...
-
さくらんぼに似ているが、さく...
-
しらたきと吐き気
-
ライム(果物)を漢字になおす...
-
「であり」と「であって」の使...
-
スーパーで買った1つ300円の梨...
-
EXCELでB1に指定文字が入った場...
-
Excel MATCH関数で検索範囲内...
-
筍の上の部分が緑色になってい...
-
ラズベリーの種の抜き方を教え...
-
デコポンの漢字よ由来
-
イチゴのケーキを作りたいんで...
-
梶井基次郎の檸檬
-
業務スーパーのソーセージ。肉...
-
いちごを1パック買ったのです...
-
プルーンの種
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
煮物こんにゃくの冷凍保存について
-
7文字以上のフルーツをできるだ...
-
スポンジケーキってどのくらい...
-
中黒「・」か読点「、」か?
-
10年前のにんにく漬け、食べて...
-
「であり」と「であって」の使...
-
Excel MATCH関数で検索範囲内...
-
スーパーで買った1つ300円の梨...
-
ライム(果物)を漢字になおす...
-
いちごを1パック買ったのです...
-
EXCELでB1に指定文字が入った場...
-
筍の上の部分が緑色になってい...
-
北海道では、見かけないもの
-
ラズベリーの種の抜き方を教え...
-
しらたきと吐き気
-
エクセルで数字を入力したら文...
-
外はふわふわで(柔らかい)、...
-
ローリエって何のために入れる...
-
教えてください!!
-
離乳食にローリエ
おすすめ情報