- ベストアンサー
同名でもエラーにならない理由
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)
- 専門家の回答
関連するQ&A
- FSO.CopyFileでのエラー無視方法
コピー元フォルダにあるxlsファイルを全てコピー先のフォルダにコピーするVBAを作っています。 既にコピー先フォルダに同名のファイルがある場合は上書きせずスキップし、 コピー先フォルダに無いファイルだけコピーしたいのですが、 Sub test() Dim FSO As Object Dim md As String Set FSO = CreateObject("Scripting.FileSystemObject") Set md = Format (Date, "MMDD") FSO.CopyFile "C:\コピー元\*.xls", "C:\コピー先\"& md ,False Set FSO = Nothing End Sub FSO.CopyFileをFalseにするとコピー先に同名のファイルがある場合に エラーで止まってしまいます。 このエラーを無視してコピーを続ける方法はありますでしょうか。 今回は確認ダイアログなど一切出さずに処理する方法が知りたいのですが、 今後の為に同名のファイルがあれば上書き確認ダイアログを出し、 処理を分岐させる方法もありましたらヒントだけでも教えて頂けると嬉しいです。 作成はExcel2010ですが、Excel2002でも動作するように作りたいです。 よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- 実行時エラー'13'型が一致しませんエラー発生
office2010 サーバのあるフォルダ(1)にexcelファイルが登録されています。 バックアップを取るために、フォルダ末尾に-と日付情報を付加して新規フォルダ(2)を作成 (1)のフォルダ配下のファイルを全て(2)のフォルダ配下にコピー という動作をさせようとしています サーバはIPアドレスで指定(**.**.**.**で表現しています) マクロ Sub Sample_FSO_CopyFolder() '参照設定追加 Microsoft Scripting Runtime 'フォルダをコピー(TOOLシートのU1セルに =TEXT(NOW(),"yyyymmddhhmmss") ' Dim datename As String Worksheets("TOOL").Range("U1").Calculate datename = Worksheets("TOOL").Range("U1") ' '新規フォルダ作成 Dim myFO As Object 'オブジェクト型の変数を定義’ Dim FolderName As String '作成したいフォルダパスを格納’ Set myFO = CreateObject("Scripting.FileSystemObject") 'オブジェクト型の変数にFileSystemObjectを設定’ FolderName = "\\**.**.**.**\data\SYSTEM\JIG" & "-" & datename & "" myFO.CreateFolder FolderName 'フォルダ作成’ Set myFO = Nothing 'オブジェクトの解放’ '複数のファイルをコピー Dim fso As FileSystemObject Set fso = New FileSystemObject Call fso.CopyFile("\\**.**.**.**\data\SYSTEM\JIG\*", "FolderName & " \ "", True) ' ' 全てのファイルをまとめてコピー ' 後始末 Set fso = Nothing End Sub 上記実行で型が一致しませんのポップアップエラーが発生します。 Call fso.CopyFile("\\**.**.**.**\data\SYSTEM\JIG\*", "FolderName & " \ "", True) の部分をFolderNameの変数ではなく、下記の様に直接フォルダ名で指定すると、コピー動作します。 'Call fso.CopyFile("\\**.**.**.**\data\SYSTEM\JIG\*", "\\**.**.**.**\data\SYSTEM\JIG-20190228174216\", True) ' 全てのファイルをまとめてコピー ※ デバッグモードのローカルウィンドウで値を見たとき、 FolderNameは\\**.**.**.**\data\SYSTEM\JIG-20190228174216 となっており正しいと思うのですが、なぜ変数指定でエラーになるのでしょう?
- ベストアンサー
- Excel(エクセル)
- エクセル2010のVBAを使ってバックアップ
エクセル2010のVBAを使ってバックアップを取れる仕組を作っています。 Sub backup() Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") FSO.CopyFile "C:\data\*.xls", "C:\back\" Set FSO = Nothing End Sub 実際にバックアップを取りたい元データはマイドキュメントにあります。 また、複数のパソコンで実行したいのですが、 C:\Documents and Settings\ログインユーザー名\MyDocuments\ このログインユーザー名がバラバラです。 データ元のパスはどのように取得すれば良いでしょうか? 教えて下さい。
- ベストアンサー
- オフィス系ソフト
- ファイルシステムオブジェクトのメソッドについて
こんにちは、皆さん。 以下のプログラムでコピーしようとしたら、 オブジェクトがメソッド、プロパティをサポートしてないという メッセージが表示されてしまいました。 Set fso = CreateObject("Scripting.FileSystemObject") fso.CopyFile "c:\aaa.txt", "c:\temp\" Set fso = CreateObject("Scripting.FileSystemObject") Set src = fso.GetFile("c:\aaa.txt") fso.Copy "c:\temp\" こういった場合、どんなメソッドがあるか確認するには どうしたらよいでしょうか? また、ファイルをコピーするにはどうしたらよいでしょうか? よろしくお願いします。
- ベストアンサー
- Visual Basic
- ACCESSのバックアップ
ACCESSを閉じる際に自分自身をコピー、 リネームしてバックアップを取りたいのです。 ・BackUp20080108.mdb ←バックアップを取る際に日付を入れる。 ・3日分までバックアップをとり、4日目を取る時は 1日目のものを消す。 【1日目】BackUp20080105.mdb 【2日目】BackUp20080106.mdb 【3日目】BackUp20080107.mdb 【4日目】BackUp20080108.mdb ←これを作る際に【1日目】を削除 とりあえずコピー、削除は出来ましたが、 フォルダ内にあるファイルの識別をどうしてよいのかわかりません。 なにかサンプル、同じようなものを作った事のある方がおりましたら ご指導お願い致します。 Dim fs As Object '自身をコピー Set fs = CreateObject("Scripting.FileSystemObject") fs.CopyFile CurrentProject.Path & "\" & CurrentProject.Name, _ CurrentProject.Path & "\" & "BackUp" & Format$(Date, "yyyymmdd") & ".mdb" 'ファイル削除 Set fs = CreateObject("Scripting.FileSystemObject") fs.deleteFile CurrentProject.Path & "\" & CurrentProject.Path & "\" & "BackUp" & Format$(Date, "yyyymmdd") & ".mdb" set fs=Nothing End Sub
- ベストアンサー
- その他([技術者向] コンピューター)
- DVD(Eドライブ)に新規ファイルを作成
VBAの初心者です。DVD(Eドライブ)に新規ファイルを作成しようと思い、WEBから拝借したコード: Sub test5() 'E:\Work\フォルダにSubフォルダを作成します。 Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") FSO.CreateFolder "E:\Work\Sub" Set FSO = Nothing End Sub を実行したところ、 FSO.CreateFolder "E:\Work\book1"の行で「パスが見つかりません」というエラーが出ます。解決法を教えてください。
- 締切済み
- その他MS Office製品
- このコードはFSOを使ってるのでしょうか?
Sub フォルダ作成() MkDir "C:\新しいフォルダ" End Sub で、フォルダが作成されますが、 上記のコードは省略されてるだけで FileSystemObjectオブジェクトは使われていますか? フォルダの操作は、FSOじゃないとできないと思っていましたが 上記のコードを見る限りFSOを使わなくても出来てるような気がして 混乱しています。 ご回答よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- vbaでフォルダ属性がうまく取れません
vbaでフォルダ属性が隠しフォルダかどうかを調べるコードを書いています。 C:\ProgramData\ は隠しフォルダなのに、なぜか16が返って来ます。 試しにvbs(wsh)だと18が返って来ます。 環境は Win10 + Excel2013(32ビット) です。 vbaで返値18を求めるにはどうすれば良いのでしょうか。 Sub test() Dim mPath Dim fso, f mPath = "C:\ProgramData\" Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(mPath) MsgBox f.Attributes End Sub
- ベストアンサー
- Visual Basic
- FileSystemObjectでエクセル作成
エクセル2003です。 Sub test() Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") With FSO.CreateTextFile("C:\test.xls") .Close End With Set FSO = Nothing End Sub これでエクセルファイルを作成することが出来るのですが サイズが0KBであり、中身を開いて文字を入れて保存しようとすると 「テキスト(タブ区切り)と互換性のない機能が含まれている可能性があります」 と言うメッセージが表示されます。 普通のエクセルファイルとは違うファイルが作成されてしまってるのでしょうか? CSVファイルではなく普通のエクセルファイルをFileSystemObjectで作成する方法をご教授ください。
- ベストアンサー
- その他MS Office製品
- FileSystemObject CopyFile の指定したファイル名にアスタリスクが付いていないと書き込みエラーが発生する
プログラム初心者です。宜しくお願いします。 職場で新PCを数十台導入したのでデータのお引越しをすることになりました。 主要なものはFASTWIZ.EXEを使用しますがNOTESデータの一部もデータ移管したいのです。 そこで以下のスクリプトを書いてみました。 ------------------------------------ 1 Dim objWshShell, objSF, FSO 2 Set objWshShell = CreateObject("WScript.Shell") 3 Set objSF = objWshShell.SpecialFolders 4 Set FSO = CreateObject("Scripting.FileSystemObject") 5 FSO.CopyFile "c:\notes\data\*.id", objSF.Item("MyDocuments") 6 FSO.CopyFile "c:\notes\data\desktop.dsk", objSF.Item("MyDocuments") 7 FSO.CopyFile "c:\winnt\notes.ini", objSF.Item("MyDocuments") ------------------------------------ ファイル名にアスタリスクを入れていないと書き込み出来ないとエラー(800A0046)が発生してしまいます。調べてみましたら権限が無いと発生するエラーだったのですが 例えば 7 FSO.CopyFile "c:\winnt\notes*.ini", objSF.Item("MyDocuments") のようにファイル名の一部にアスタリスクを追加するとエラーが発生せず正常に実行されます。 ? アスタリスクを付ければ正常に動作するので良いんですが、何故なのか分からないと気持ちが悪くていけません。 調べてみたのですが分からず皆様のお知恵を拝借出来ないかと書き込ませて頂きました。 宜しくお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
お礼
すいません。 自分自身よくわからないまま質問していたと思います。 もっと勉強してみたいと思います。参考になりました。