
お世話になっております。
マクロ初心者です。
ファイル名称のyyyymmddとフォルダ名称のyyyymmddが
一致したものだけを移動させるVBAを教えていただきたいです。
ファイル名称の左から14文字目~22文字目のyyyymmddとフォルダ名称の左から1文字目~8文字目の
yyyymmddが一致する場合のみ該当のファイルをフォルダへ移動します。
一致しないものはそのままにします。
フォルダとファイルは複数存在します。
因みに今回移動させるファイルはAVIファイルです。
ファイル名称「xx-xx__0000x_yyyymmddxxxxxx.avi」
フォルダ名称「yyyymmdd_xx-xx_aaaaa」
例)
ファイル名称
1 xx-xx__0000x_20211001xxxxxx.avi
2 xx-xx__0000x_20211002xxxxxx.avi
3 xx-xx__0000x_20211003xxxxxx.avi
4 xx-xx__0000x_20210901xxxxxx.avi
フォルダ名称
A 20211001_xx-xx_aaaaa
B 20211002_xx-xx_aaaaa
C 20211003_xx-xx_aaaaa
1は20211001が一致するためAへ移動
2は20211002が一致するためBへ移動
3は20211003が一致するためCへ移動
4は20210901が一致するフォルダがないためそのまま
以上です。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
以下のマクロを標準モジュールに登録してください。
Const FolderName As String = "d:\goo\data3"
は移動対象となるファイル及びフォルダを格納しているフォルダ名です。
あなたの環境にあわせて適切に設定してください。
--------------------------------------------
Option Explicit
Public Sub ファイル移動()
Const FolderName As String = "d:\goo\data3"
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim tfolders As Object
Dim tfiles As Object
Dim wfil As Object
Dim wfol As Object
Dim srcName As String
Dim dstName As String
Set tfolders = FSO.getfolder(FolderName).Subfolders
Set tfiles = FSO.getfolder(FolderName).Files
For Each wfil In tfiles
For Each wfol In tfolders
If Mid(wfil.Name, 14, 8) = Mid(wfol.Name, 1, 8) Then
srcName = FolderName & "\" & wfil.Name
dstName = FolderName & "\" & wfol.Name & "\" & wfil.Name
If FSO.FileExists(dstName) Then
FSO.deletefile (dstName)
End If
FSO.movefile srcName, dstName
Exit For
End If
Next
Next
MsgBox ("完了")
End Sub
No.1
- 回答日時:
ファイルが保存されているフォルダと振り分けるフォルダの相対位置関係が不明ですし、場所によっては権限で移動できないかも?
比較する場合は文字列から抜き出すためにMID関数
http://officetanaka.net/excel/vba/function/Mid.htm
を用いてみるとか?
あとはFileSystemObject
http://officetanaka.net/excel/vba/filesystemobje …
を読破するといけるかな?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル名と同名のフォルダを...
-
VBA 最新のフォルダ取得
-
Windows10でコマンドプロンプト...
-
デスクトップの画像をhtmlに表...
-
【マクロ】ファイル名の日付に...
-
API関数(DLL)の呼び出しにお...
-
フォルダにリンクを貼りたい
-
バッチファイル フォルダを...
-
Excelで指定したフォルダに保存...
-
フォルダを開いて、閉じるのプ...
-
VBS サブフォルダの再帰処理に...
-
ファイル名から該当フォルダへ移動
-
Let’s Encryptでwebroot設定な...
-
ファイルとフォルダのどちらも...
-
ツリービューを使って、エクス...
-
excel VBA Dirにて検索したフォ...
-
フォルダのサイズを取得したい
-
ディレクトリ名変更してコピー...
-
【マクロ】フォルダにファイル...
-
バッチファイル:ファイルのフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
VBA 最新のフォルダ取得
-
デスクトップの画像をhtmlに表...
-
ファイル名と同名のフォルダを...
-
会社のネットワーク上のファイ...
-
ExcelのVBAでフォルダ指定がで...
-
Excelで指定したフォルダに保存...
-
VBA フォルダの複数選択ができない
-
【マクロ】ファイル名の日付に...
-
VB.NRT FolderBrowserDialogを...
-
【マクロ】フォルダにファイル...
-
ThisWorkbookがあるフォルダ更...
-
ディレクトリ名変更してコピー...
-
(C#)フォルダを指定するダイ...
-
VB6で7-ZIPのAPIを使用した圧縮...
-
VBプロジェクトでのフォルダ構...
-
パス名に2バイト文字(マルチバ...
-
Debug フォルダは消していいの?
-
フォルダにリンクを貼りたい
-
フォルダAから1つのファイルだ...
おすすめ情報
説明不足ですみません。
フォルダーとファイルは同じ階層にあり、
フォルダーに権限等は設定していません。