前提・実現したいこと
VBAで、指定のフォルダ配下を新規フォルダとしてバックアップしたい。
FileSystemObjectのCopyFolderメソッドを使って試みています。
発生している問題・エラーメッセージ
実行時エラー:5 プロシージャの呼出し、または引数が不正です。
該当のソースコード
VBA
1'バックアップ作成(フォルダ) 2Sub BackUp_Folder() 3 4 'On Error GoTo Catch 5 6 Dim FolderName 7 FolderName = Now() 8 9 'バックアップ後のフォルダ名を作成 10 FolderName = Format(FolderName, "yyyymmddhhmm") 11 12 'バックアップ元とバックアップ後のフォルダパスを設定します 13 Dim Moto, Saki As String 14 Moto = ThisWorkbook.Path 'バックアップ元のフォルダパス 15 Saki = ThisWorkbook.Path & "\" & FolderName 'バックアップ後のフォルダパス 16 Debug.Print Moto 17 Debug.Print Saki 18 19 '参照設定 20 Dim FSO As Object 21 Set FSO = CreateObject("Scripting.FileSystemObject") 22 If FSO Is Nothing Then 23 Debug.Print ("DLL が存在しません") 24 Exit Sub 25 End If 26 27 'フォルダをコピーします 28 'Moto・・・バックアップ元フォルダ名("C:\○○○\○○○") 29 'Saki・・・バックアップ先フォルダ名("C:\○○○\○○○") 30 'False・・・上書き禁止(True:上書き許可) 31 Debug.Print "コピー開始" 32 FSO.CopyFolder Moto, Saki, False 33 Debug.Print "コピー終了" 34 Set FSO = Nothing 35 36'Catch: 37 ' エラー処理 38 ' Debug.Print ("エラー") 39 ' Set FSO = Nothing 40 41End Sub 42
試したこと
1,公式ドキュメント↓を見てみましたが、引数に問題があるとは思えませんでした。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/copyfolder-method
2、他サイト(例えば下記)も見てみましたが、書き方に相違があるとは思えませんでした。
https://www.tipsfound.com/vba/18019
3、フォルダ名の財政を「zaisei」にしてみても変わりありませんでした。
4、Call FSO.CopyFolder(Moto, Saki, False)
にしてみましたが、変わりありませんでした。
5, Call FSO.CopyFolder(Moto, Saki)
にしてみましたが、変わりありませんでした。
6, FSO.CopyFolder Moto, Saki
にしてみましたが、変わりありませんでした。
※参照設定を使う手もありますが、他の人のPCでも設定なしで即実行できるようにしたいため、敢えて使いたくありません。
補足情報(FW/ツールのバージョンなど)
コンソールの出力
C:\Users\ユーザー\Documents\財政\2021
C:\Users\ユーザー\Documents\財政\2021\202108142051
コピー開始
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/16 12:28
2021/08/17 04:46