前提
以下のコードを使って、2つのフォルダを統合し、追加したデータをフォルダごと「追加データ」というフォルダに移動しています。
エラー等はなく正常に作動するのですが、同名のファイルが有った場合に自動で上書き保存されてしまいます。
実現したいこと
同名のファイルが有った場合に「同名のファイルがあります・・・。」の表記が表示される。
又は「ファイル名(1)」の様に自動で名前を変えて保存したい。
若しくは同名のファイルが有った場合は移動しない。
試したこと
Do while や for文等を使い、ファイルを循環させれば実現可能なのですが、そもそもVBA上でエクセルを保存する時の様に、上書きする際に、「fso.CopyFolder」の設定等を指定出来ないかと思い質問致しました。
ちなみに主導でフォルダをドラッグ&ドロップすると、「同名のファイルが存在します・・・」というメッセージが表示され、上書き「置き換え」するか選択できます。
以下がそのコードです。下から5行目に「fso.CopyFolder」を使っております。
よろしくお願いします。
Sub データ上書き() Set fso = CreateObject("Scripting.FileSystemObject") adname = "初期値" Row = 6 Do While adname <> "" adname = Cells(Row, 2) & "\" & Cells(Row, 1) addit = ThisWorkbook.Path & "\追加データ" & "\" & Cells(Row, 1) If adname = "\" Then Exit Do End If b = fso.FolderExists(adname) c = fso.FolderExists(addit) If b = False Then MsgBox "注意!!!移動先(重要データ)のフォルダが有りません。" & Cells(Row, 1) & "のURLを確認して下さい。" End ElseIf c = False Then MsgBox Cells(Row, 1) & "の追加データが存在しません。" End End If fso.CopyFolder addit, adname '異動済みフォルダ lastfol = ThisWorkbook.Path & "\過去追加データ" & "\" & Format(Date, "yyyymmdd") b = fso.FolderExists(lastfol) If b = False Then 'ファイル無かったら移動 MkDir lastfol fso.MoveFolder addit, lastfol & "\" & Cells(Row, 1) Else 'フォルダが有ったらコピー&削除 fso.CopyFolder addit, lastfol & "\" & Cells(Row, 1) fso.deletefolder addit End If Row = Row + 1 Loop End Sub
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。