
VBAでカレントフォルダ配下のフォルダに存在する指定したファイルを任意のフォルダにコピーするマクロを作成したいのですが、フォルダ(フルパス)とファイル名を指定してコピーするマクロしか作成できませんでした。ご教授いただきたいです。
【前提】
「SAMPLE.xlsm」が存在するフォルダをカレントフォルダにする。
【状況】
「C:\SAMPLE」にSAMPLE.xlsmが存在している。
下記のフォルダ構成図のような構成でファイルが格納されている。
【処理】
A列にコピーしたいファイルを列挙する。
カレントフォルダ(SAMPLE.xlsmがあるフォルダ)のサブフォルダに存在する、A列に列挙したファイルを任意フォルダにコピーする。(コピー先のフォルダはC1セルの値でパスを指定する)
A2~A●セルまでFor文でコピーを回す(空白セルになったらループを止める)
サブフォルダに指定したファイル以外のファイルがあっても指定したファイルのみをコピーできるようにする。(「C:\SAMPLE\AAA\AAA_04.c」はコピーしない)
フォルダ構成図
C:\SAMPLE
¦
¦---AAA
¦ ¦---AAA_01.c
¦ ¦---AAA_02.c
¦ ¦---AAA_03.c
¦ ¦---AAA_01.h
¦ ¦---AAA_02.h
¦ ¦---AAA_03.h
¦
¦---BBB
¦ ¦---BBB_01.c
¦ ¦---BBB_02.c
¦ ¦---BBB_03.c
¦ ¦---BBB_01.h
¦ ¦---BBB_02.h
¦ ¦---BBB_03.h
¦
¦---CCC
¦---CCC_01.c
¦---CCC_02.c
¦---CCC_03.c
¦---CCC_01.h
¦---CCC_02.h
¦---CCC_03.h

No.1ベストアンサー
- 回答日時:
こんばんは、
>「SAMPLE.xlsm」が存在するフォルダをカレントフォルダにする。
カレントフォルダとして他の処理に使われるのでしょうか?
ご質問の前提の場合、ThisWorkbook.Path (VBAが実行されているブックのパス)で
対応可能なので、ThisWorkbook.Pathにします。必要であればfolPath = ThisWorkbook.Pathを変更してください。
また、ThisWorkbook.Pathで不具合が発生する場合、ActiveWorkbook.Pathに変えてみてください。(過去の事例)
>A列にコピーしたいファイルを列挙する。
流石にコピーしたい情報は分かりません。添付図の様にすでに抽出されているものと考えています。
いくつか不明な点がありますが、こんな感じでどうでしょう。
SAMPLE.xlsmの標準モジュールに
Option Explicit
Sub sample()
Dim FSO As Object, f As Object
Dim AryF As Variant, i As Long
Dim folPath As String, exfol As String, Target As String
folPath = ThisWorkbook.Path '「SAMPLE.xlsm」が存在するフォルダ
exfol = Sheets(1).Range("C1").Text 'シート名が不明の為、インデックス1にしてあります。
Set FSO = CreateObject("Scripting.FileSystemObject")
AryF = Sheets(1).Range("A1:A" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row) 'シート名が不明の為、インデックス1にしてあります。A2~A●セルまでの値を配列に入れています。
On Error Resume Next '念のため
For i = 1 To UBound(AryF) '配列要素分ループ
For Each f In FSO.GetFolder(folPath).SubFolders 'サブフォルダすべてをループ
Target = f & "\" & AryF(i, 1)
If Dir(Target) <> "" Then FSO.GetFile(Target).Copy exfol & "\": Exit For 'あれば指定フォルダ内に保存
Next f
Next i
Set FSO = Nothing
MsgBox ("完了")
End Sub
A列セルのファイル名には拡張子を含めてください。例:hoge.xlsx hoge.png など
>C1セルの値でパスを指定する パスの最後に\は不要です。コード内で追加しています。例:C:\SAMPLE\hoge\huga
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大量のフォルダからひとつのフ...
-
一太郎がイントラで開けません...
-
Thunderbirdで社内共有フォルダ...
-
win10の「フォト」で、「次へ」...
-
バッチファイルでサーバーのフ...
-
名前の変更ができない動画ファイル
-
パソコンのフォルダー内のファ...
-
一括でフォルダと同じ名前にフ...
-
VMWareのホスト-ゲストOS間でフ...
-
チームズのチャット画面にファ...
-
特定フォルダ内のファイルを自...
-
virualboxで仮想マシンフォルダ...
-
Teraterm scprecvの上書き確認...
-
コマンドプロンプトでフォルダ...
-
ファイルやフォルダのコピー、...
-
パソコンで写真の撮影日を探す...
-
クリップNOTEというソフトを使...
-
anyDVDの製品版について。
-
圧縮時に空のフォルダを残すには
-
1つのファイルを複数のフォルダ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のフォルダからひとつのフ...
-
win10の「フォト」で、「次へ」...
-
Thunderbirdで社内共有フォルダ...
-
バッチファイルでサーバーのフ...
-
一括でフォルダと同じ名前にフ...
-
一太郎がイントラで開けません...
-
特定フォルダ内のファイルを自...
-
チームズのチャット画面にファ...
-
パソコンのフォルダー内のファ...
-
同名のフォルダを検索・削除したい
-
名前の変更ができない動画ファイル
-
一定のファイル数ごとにフォル...
-
ビルダーを使ってますがパソコ...
-
ファイルやフォルダのコピー、...
-
Teraterm scprecvの上書き確認...
-
クリップNOTEというソフトを使...
-
PCのアプリケーションを別のPC...
-
VMWareのホスト-ゲストOS間でフ...
-
Fast Copy と Fire File Copy ...
-
Becky!で作成したフォルダにも...
おすすめ情報