• ベストアンサー

同名でもエラーにならない理由

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というのを使うとエラーにならないのですか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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 ステートメントを実行しようとすると、エラーが発生します。」 仮に、コピー先に同じファイルがなくても、エラーが出ます。それも仕様と言えばそうですが……。 こういうことをお聞きになりたいのですか?もし、そうでないのなら、無視してください。

uiyiuq
質問者

お礼

すいません。 自分自身よくわからないまま質問していたと思います。 もっと勉強してみたいと思います。参考になりました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

FSOの解説書の「CopyFile」の解説にちゃんと解説有ります。 第3引数が上書きオプションで、TRUEは上書きする、です。 同じフォルダに、同名(同種の)ファイルが存在するなんて、おかしいと思わなきゃ。そしてFSOの CopyFileの解説書(部分)を見る。 Googleででも「FSO CopyFile」で照会すると http://officetanaka.net/excel/vba/filesystemobject/filesystemobject.htm#CopyFile などの の解説が有る。

uiyiuq
質問者

お礼

ありがとうございます。

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.1

CopyFile メソッド http://msdn.microsoft.com/ja-jp/library/cc428016.aspx 上記ページに書かれているとおり、 CopyFileメソッドはoverwriteフラグがtrue(既定値)だと 既存ファイルを上書きし、エラーは発生しません。

uiyiuq
質問者

お礼

ありがとうございます。

関連するQ&A