- ベストアンサー
同名でもエラーにならない理由
Sub バックアップ作成() Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") FSO.CopyFile CurrentProject.FullName, "C:\test.mdb" Set FSO = Nothing End Sub このコードを実行すると、同じファイルがあってもエラーになりません。 Sub DiskOprate4() MkDir "C:\バックアップ" End Sub なら同名のフォルダがあればエラーになります。 ファイルはエラーにならないがフォルダならエラーになるのでしょうか? それともFSOというのを使うとエラーにならないのですか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 FSOと同じ条件するか、VBAのコマンドを同じ条件にして、比較しないと質問の論理が通らないと思います。 これで、エラーではなくて、エラーメッセージが返されます。 それは、仕様ですから、Dir関数で回避するなりすればよいと思います。 Sub CreateFolderDemo() Dim fso As Object, f As Object Const myFOLDER = "C:\バックアップ" Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.CreateFolder(myFOLDER) MsgBox f.Path End Sub しかし、ファイルのCopyというなら、こういうことになりませんか? 何か、ご質問自体が混乱しているように思います。 >このコードを実行すると、同じファイルがあってもエラーになりません。 >Sub バックアップ作成() >Dim FSO As Object >Set FSO = CreateObject("Scripting.FileSystemObject") > >FSO.CopyFile CurrentProject.FullName, "C:\test.mdb" >Set FSO = Nothing >End Sub 上記のコードが少しおかしいけれども、この同じようなプログラムというなら、 Sub Insideバックアップ作成() Dim strFLName As String Dim strFname As String Const myFOLDER = ""C:\バックアップ" strFLName = CurrentProject.FullName strFname = CurrentProject.Name FileCopy strFLName, myFOLDER & "\" & strFname End Sub ヘルプに書いてあるように、 「既に開いているファイルに対して、FileCopy ステートメントを実行しようとすると、エラーが発生します。」 仮に、コピー先に同じファイルがなくても、エラーが出ます。それも仕様と言えばそうですが……。 こういうことをお聞きになりたいのですか?もし、そうでないのなら、無視してください。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
FSOの解説書の「CopyFile」の解説にちゃんと解説有ります。 第3引数が上書きオプションで、TRUEは上書きする、です。 同じフォルダに、同名(同種の)ファイルが存在するなんて、おかしいと思わなきゃ。そしてFSOの CopyFileの解説書(部分)を見る。 Googleででも「FSO CopyFile」で照会すると http://officetanaka.net/excel/vba/filesystemobject/filesystemobject.htm#CopyFile などの の解説が有る。
お礼
ありがとうございます。
- Gotthold
- ベストアンサー率47% (396/832)
CopyFile メソッド http://msdn.microsoft.com/ja-jp/library/cc428016.aspx 上記ページに書かれているとおり、 CopyFileメソッドはoverwriteフラグがtrue(既定値)だと 既存ファイルを上書きし、エラーは発生しません。
お礼
ありがとうございます。
お礼
すいません。 自分自身よくわからないまま質問していたと思います。 もっと勉強してみたいと思います。参考になりました。