「教えて!ピックアップ」リリース!

下記のマクロコードをご覧ください!!!

AフォルダとBフォルダの場所や名前は
絶対に変わらないと、仮定すると下記コードは
削除しても動きますか?

やりたい事は、なるべく、コードを削除して
短いコードに変更したいです。



【削除したいコード】
If Not (.FolderExists(pathA) And .FolderExists(pathB)) Then

MsgBox "指定フォルダが存在しません"

Exit Sub

End If


【マクロ内容】
Aフォルダから、Bフォルダに、ファイル【PDF等】を
古い順に、1回実行するごとに、移動する
※動きます


【マクロ コード】
Sub フォルダAから時系列で1つずつフォルダBへ移動する()


Dim f, fo, dt As Date, i As Long
Dim fn As String, ex As String, tmp As String
Dim pathB As String




Const pathA = "C:\Users\user\Desktop\フォルダA"


pathB = "C:\Users\user\Desktop\フォルダB"





With CreateObject("Scripting.FileSystemObject")

If Not (.FolderExists(pathA) And .FolderExists(pathB)) Then

MsgBox "指定フォルダが存在しません"

Exit Sub

End If



If .getfolder(pathA).Files.Count = 0 Then
MsgBox "【ファイルが1つもありません】"
Exit Sub
End If


dt = Now + 1

For Each f In .getfolder(pathA).Files

If f.DateLastModified < dt Then

dt = f.DateLastModified

Set fo = f

End If

Next f





If Not fo Is Nothing Then




ex = "." & .GetExtensionName(fo.Name)

fn = Left(fo.Name, Len(fo.Name) - Len(ex))

tmp = .BuildPath(pathB, fn & ex)

i = 1

While .FileExists(tmp)

i = i + 1

tmp = .BuildPath(pathB, fn & "(" & i & ")" & ex)

Wend


.MoveFile fo.Path, tmp

End If

End With

End Sub

A 回答 (3件)

こんにちは



ご質問の意図がさっぱりわかりませんけれど・・・


>なるべく、コードを削除して短いコードに変更したいです。
元がさほど長いものとも思えないので、無駄な改行を削除すればそれなりに短くなると思いますが、そういうことでもないのでしょうから、推測できる範囲でなるべく短くしてみました。

Sub X()
A = "C:\Users\user\Desktop\フォルダA"
B = "C:\Users\user\Desktop\フォルダB"

Set S = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
For Each f In S.getfolder(A).Files
m = f.DateLastModified
If IsEmpty(t) Or m < t Then Set fo = f: t = m
Next
S.MoveFile fo.Path, B & "\" & fo.Name
If Err.Number > 0 Then MsgBox "不適処理!"
End Sub
    • good
    • 0

マクロを理解している人が使うだけなら削除しても構いません。


それが誤っていたとしても実行エラーになるだけですから。
Msgboxにしているのは、マクロを知らない人が操作する時の親切表示です。
    • good
    • 0

【削除したいコード】


'If Not (.FolderExists(pathA) And .FolderExists(pathB)) Then

'MsgBox "指定フォルダが存在しません"

'Exit Sub

'End If

コメント文にして試してみては?
そう言うのも勉強になりますよ。
削除しちゃうと戻すのが大変なのでコードの各行の先頭に ' を付ける。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング