[[20080405073032]] 『バックアップ』(かかし) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『バックアップ』(かかし)1フォルダと2フォルダがあります。1フォルダの内容を2フォルダに現時点までの内容を各ファイルにコピー(バックアップ)するVBAはできませんか?

 方法は、いくつもありますが、OSのファイル管理にアクセスするなら、FSO(File System Object)
 を覚えるの簡単で便利です。遅いことを我慢すれば・・・。

 標準モジュールに
 '============================================================
 Sub main()
    Dim f1, f2
    f1 = get_folder_path("コピー元フォルダを指定して下さい")
    f2 = get_folder_path("コピー先フォルダを指定して下さい")
    If TypeName(f1) <> "Boolean" And TypeName(f2) <> "Boolean" Then
       With CreateObject("scripting.filesystemobject")
          .CopyFolder f1, f2, True
          End With
       End If
 End Sub
 Function get_folder_path(ByVal mes As Variant) As Variant
    Dim fld  As Object
    Set fld = CreateObject("Shell.Application").BrowseForFolder(0, mes, 1, 17)
    On Error Resume Next
    If Not fld Is Nothing Then
       get_folder_path = fld.items.Item.Path
       If Err.Number <> 0 Then
          get_folder_path = False
          End If
    Else
       get_folder_path = False
       End If
 End Function

 として、mainを実行してみてください。コピー元とコピー先のフォルダを指定してください。
 これらが正しく指定されると、コピーを開始します
 ichinose


回答ありがとうございます。コピーの開始を時間を指定して行う事は可能でしょうか? 例えば毎日夜十時になると自動で上書き保存するようにするにはどのようにすればうまくいきますか?よろしくお願いがします(かかし)

 タスクスケジューラで、バッチを指定すればよいのでは?

 バッチの中身は、
 Xcopy /S /D /C "C:\1フォルダ\*.*" "C:\2フォルダ\"
 でよいと思いますが。
 (Mook)

すみません。難しいすぎて意味が?この手の作業はまったく初心なのでできれば1から教えてもらえないでしょうか?(かかし)

 タスクスケジューラは、プログラムを予定した時刻に実行する機能です。
http://support.microsoft.com/kb/178706/ja

 バッチは、ただのテキストファイルですが、書かれたコマンドを順番に実行します。
 Backup.bat というファイルを作り、上記を書きます(フォルダのパスは修正)。

 そのファイルをダブルクリックするだけでも、実行できます。
 タスクスケジューラで、バッチを指定すれば完了です。

 どちらも、EXCEL とは無関係ですので、どうしても EXCELでということでしたら、
 読み飛ばしてください。
 (Mook)

回答ありがとうございます。これらを参考に勉強してみます。(かかし)

 タスクスケジューラーの使用は、同感ですが、以下のコードを

 With CreateObject("scripting.filesystemobject")
   .CopyFolder "d:\フォルダ1","D:\フォルダ2" , True
   End With

 vbsという拡張子で保存したスクリプトをタスクスケジューラーに登録でも可能です。

 ichinose


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.