人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

指定条件フォルダ内の指定ファイルの自動コピーをしたいです。
以前類似の質問をし、回答でVBスクリプトのコードを書いていただきました。
http://q.hatena.ne.jp/1526039092
コードを流用できそうですが私は知識が無くうまくいきませんでした。

今回実現したいことは
フォルダAの下に多数のフォルダA-1,A-2,A-3等を作り、それらの中に複数枚(0?30枚)の画像ファイルを入れます。
このフォルダ群の中で11枚以上の画像ファイルが入っているフォルダを
フォルダBの下にコピーしたいです。
ただし番号の若いファイル10枚目まではコピーせずに11枚目以降のみをコピーします。

例えば
フォルダAの下のフォルダA-1には画像ファイルが8枚,A-2には10枚,A-3には13枚の場合には
フォルダBにフォルダA-3のフォルダのみをコピーし、そのフォルダの中にはA-3の中に入っていた画像ファイルのうち若いファイル名から数えて
11枚目?13枚目の3枚のみをコピーする。
というものです。

具体的なコードを記載いただけると大変助かります。
どうぞよろしくお願いいたします。
なおOSはwindows10です。

●質問者: orekojinn
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Silvanus
●3000ポイント ベストアンサー

お試し下さい。

Option Explicit

Dim objRecSet
Dim objFileSys
Dim objFolder
Dim objSubFolder
Dim objSubFolders
Dim strPath
Dim intCnt
Dim intNFiles
Dim strFileName
Dim strFNSorted

Const INT_N_FILES = 10 ' スキップするファイル数
Const STR_PATH_SRC = "C:\XXXXX" ' コピー元 親フォルダ
Const STR_PATH_DST = "C:\YYYYY" ' コピー先 親フォルダ

Const AD_VAR_CHAR = 200 ' adVarChar, ADO DataTypeEnum

Set objFileSys = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFileSys.GetFolder(STR_PATH_SRC)
Set objSubFolders = objFolder.SubFolders

For Each objSubFolder In objSubFolders
 intNFiles = objSubFolder.Files.Count
 If objSubFolder.Files.Count > INT_N_FILES Then
 strPath = STR_PATH_DST & "\" & objSubFolder.Name
 If Not objFileSys.FolderExists(strPath) Then
 objFileSys.CreateFolder(strPath)
 End If
 Set objRecSet = CreateObject("ADODB.Recordset")
 Call objRecSet.Fields.Append("FileName", AD_VAR_CHAR, 255)
 Call objRecSet.Open()
 For Each strFileName In objSubFolder.Files
 Call objRecSet.AddNew()
 objRecSet.Fields("FileName").Value = strFileName.Name
 Next
 Call objRecSet.Update()
 objRecSet.Sort = "FileName ASC"
 strFNSorted = objRecSet.GetRows()
 Call objRecSet.Close()
 Set objRecSet = Nothing
 For intCnt = INT_N_FILES To intNFiles - 1
 Call objFileSys.CopyFile(objSubFolder & "\" & strFNSorted(0, intCnt), strPath & "\" & strFNSorted(0, intCnt), True)
 Next
 End If
Next

MsgBox "処理を終了しました。", vbOkOnly + vbInformation, "終了"

orekojinnさんのコメント
ただいま動かしてみました。希望通りの動きをすることを確認しました。 いつもありがとうございます。 m(_ _)m
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ