前提・実現したいこと
実行までは進みますがパスが見つからないとエラーメッセージが出ます。
デバックを見ると「lMax = .GetFolder(sTargetFolderPath).Files.Count」の部分に問題が有るようですが、VBAに関してコピペする程度の知識しかない為解決できません。
発生している問題・エラーメッセージ
実行時エラー'76': パスが見つかりません。
該当のソースコード
VBA
1 2 3Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 4 5'========================================================== 6' 画像を一定のサイズ毎にフォルダに振り分ける 7'========================================================== 8Public Sub partedFilesBySize() 9 Dim objFile As Object 10 Dim File_List As Variant 11 Dim lFileSize As Long 12 Dim lTotalSize As Long 13 Dim lLimitSize As Long 14 Dim sTargetFolderPath As String 15 Dim sSaveFolderPath As String 16 Dim sSavePath As String 17 Dim iFolderCnt As Integer 18 Dim sBuf As String 19 20 ' 実行結果の表示 21 Dim lCnt As Long 22 Dim lMax As Long 23 24 sTargetFolderPath = InputBox("振り分け元のフォルダパスを入力して下さい") 25 lLimitSize = InputBox("上限とするサイズを入力して下さい(単位:Mbyte)") * 1000000 26 27 If sTargetFolderPath <> "" And lLimitSize > 0 Then 28 MsgBox "処理を開始致します。" & vbCrLf & _ 29 "処理済みのデータはデスクトップ上に保存されます。" 30 31 sSaveFolderPath = createFolder(CreateObject("WScript.Shell").SpecialFolders.Item("Desktop") & "\processed_img") 32 iFolderCnt = 1 33 lCnt = 1 34 35 With CreateObject("Scripting.FileSystemObject") 36 lMax = .GetFolder(sTargetFolderPath).Files.Count 37 38 For Each objFile In .GetFolder(sTargetFolderPath).Files 39 Application.StatusBar = lCnt & " / " & lMax & " 件 処理済み" 40 sBuf = objFile.Name 41 ' ファイルサイズを取得 42 lFileSize = FileLen(sTargetFolderPath & "\" & sBuf) 43 44 45 ' 以下のいずれかの条件に一致する場合に保存先フォルダを作成する 46 ' 1 : lTotalSize(合計サイズ)の内容が0(ループ開始時)の場合 47 ' 2 : 合計サイズ + 次ファイルの容量が設定上限を超える場合 48 If lTotalSize = 0 Or (lTotalSize + lFileSize) > lLimitSize Then 49 50 sSavePath = createFolder(sSaveFolderPath & "\" & Format(iFolderCnt, "0000")) 51 lTotalSize = lFileSize 52 iFolderCnt = iFolderCnt + 1 53 54 Else 55 56 lTotalSize = lTotalSize + lFileSize 57 58 End If 59 60 ' ファイルコピー 61 FileCopy sTargetFolderPath & "\" & sBuf, sSavePath & "\" & sBuf 62 63 lCnt = lCnt + 1 64 DoEvents 65 Sleep 1 66 Next 67 End With 68 69 End If 70 71 MsgBox "サイズ振り分けが完了しました!" 72End Sub 73 74'========================================================== 75' フォルダ生成 76' 対象のフォルダが既に存在する場合は何もしない 77'========================================================== 78Public Function createFolder(path As String) As String 79 80 If Dir(path, vbDirectory) = "" Then 81 MkDir path 82 End If 83 84 createFolder = path 85End Function 86 87
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
コードが
https://rabbitfoot.xyz/file-distribute/
↑ここのソースをただコピペしただけのようですが、
ステップ実行はしてみたのでしょうか?
>> デバックを見ると「lMax = .GetFolder(sTargetFolderPath).Files.Count」の部分に問題が有るようですが、
ここでエラーが発生したということですか?
回答2件
あなたの回答
tips
プレビュー