[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『1日1回 自動保存』(GIA)
共有ドライブに保存されているエクセルファイルを、
1日1回 自分のPCの指定のフォルダに自動保存したいです。
ネットで検索して基になりそうなコードは見つけたのですが、
指定の場所に保存する方法が分かりません。
ヒントでもなんでも良いので、教えて下さい。
Sub macro110514a()
'1. ○○分ごとにバックアップを作成する
'本体保存 ActiveWorkbook.SaveAs folder = "C:\Users\**-*****\Desktop\BACKUP"
Dim wb As String
wb = Replace(ActiveWorkbook.Name, ".xls", "")
ActiveWorkbook.SaveCopyAs _ ActiveWorkbook.Path & "\" & wb & _ Format(Now(), "yyyymmdd_hhmmss") & ".xls"
Application.OnTime _ Now() + TimeValue("00:30:00"), _ "macro110514a"
End Sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
ヒント:
提示したマクロは、
1.アクティブなブックを保存する
2.30分後に自分自身を実行(再帰処理)する
といった処理をしているように思われます。
>共有ドライブに保存されているエクセルファイルを、
>1日1回 自分のPCの指定のフォルダに自動保存
VBAにこだわらないのであれば、DOSを勉強してみて、バッチファイルを作成し、タスクスケジューラーで実行したほうがよさげに思います。(この掲示板の趣旨と外れますけど・・・)
(もこな2) 2018/04/25(水) 12:38
(この掲示板の趣旨と外れますけど・・・)
↓
(この掲示板の趣旨と外れちゃうようにおもいますけど。(Excelに関係ない話になるので))
(もこな2) 2018/04/25(水) 12:59
再帰処理って、ブックが閉じられていても
指定の時間で処理してくれるんでしょうか?
あと、
ActiveWorkbook.Path
ってどういう意味なんですか?
ここを変えてで、保存先のフォルダを指定するのでしょうか?
(GIA) 2018/04/25(水) 13:15
自作しなくてもフリーソフトをダウンロードしてみてはいかがでしょうか?
バックアップソフト
で探したらみつかりそうな気がします。
(まっつわん) 2018/04/25(水) 13:16
フリーソフトで探してみましたが、
エクセル自体についてる、自動保存を流用した感じで、
保存間隔が、120分までしか設定できない感じでした。
24時間間隔で保存したいので、ダメそうです…
(GIA) 2018/04/25(水) 18:11
(1)
>アクティブでないブックを保存するのは、どうすれば良いのでしょか?
ActiveWorkbook.SaveCopyAs 〜〜〜
↑では、アクティブブックのコピーを保存しています。
もっというと、「アクティブなBookオブジェクト」を「SaveCopyAs」しています。
なので、たとえば「保存したいブック.xlsx」を「SaveCopyAs」したいのであれば、
Workbooks("保存したいブック.xlsx").SaveCopyAs 〜〜〜
という書き方にします。
ちなみに、「SaveCopyAs」はちょっと特別ですけど、名前をつけて保存や、上書保存などをどのように記述すればいいのか解らない場合は、マクロの記録という機能をつかって、手動操作をExcel君にコード化してもらうと、どのような記述をすれば良いのかわかりますので、それを手がかりに改造していくと良いと思います。
(2)
>再帰処理って、ブックが閉じられていても
>指定の時間で処理してくれるんでしょうか?
二つの意味にとれるのですがどっちでしょうか?まぁどちらの意味でもできないと思います。
・マクロを記述するブックを閉じても処理できますか→マクロを実行するにはブックを開いていなければ無理です。
・「SaveCopyAs」をするブックを閉じていても処理できますか→”WorkBookオブジェクト”として処理するためには、開いている必要があるとおもいます。
(3)
>ActiveWorkbook.Path ってどういう意味なんですか?
読んでそのまま、アクティブなブックのパスです。
新規ブックを立ち上げて、標準モジュールに以下を記述したうえで、一度保存してから、
記述したマクロを実行すると、よくわかるんじゃないかとおもいます。
Sub ブックのパス() MsgBox ActiveWorkbook.Path End Sub
繰り返しになりますが、ご質問のことって(Excel)VBAで処理するような話ではないように思い、下記参考のような技術の組み合わせのほうがおすすめな気がします。(エクセルに関する話ではなくなりますが・・・)
【タスクスケジューラの基本的な使い方(Windows 7/8.x/10編】
http://www.atmarkit.co.jp/ait/articles/1305/31/news049.html
【Windowsの「robocopy」コマンドでフォルダをバックアップ/同期させる】
http://www.atmarkit.co.jp/ait/articles/0704/20/news130.html
(もこな2) 2018/04/25(水) 19:37
なんとなく、
VBAで処理できないって事は理解しました!
タスクスケジューラのやつ試してみます〜
(GIA) 2018/04/26(木) 09:56
いや、無理ではないですよ。
ただ、マクロを記述したブックと、対象のブックをず〜〜っと開いていないとダメなので、そんな設計でいいのかなぁと勝手に心配してるだけです。
>タスクスケジューラのやつ試してみます〜
紹介しておいてなんですが、robocopy使うときは十分にテストして、動きをよく確認してから使ってください。
出力先とデータ元を間違えて逆にしたまま、/MIRオプションつけて実行してしまい、サーバーのデータを吹っ飛ばしたことがある私がいうので間違いないです。orz
(もこな2) 2018/04/26(木) 12:44
なんでエクセルに拘るんですか?
https://freesoft-100.com/pasokon/backup.html
>24時間間隔で保存したいので、ダメそうです…
>なんとなく、VBAで処理できないって事は理解しました!
まー。なんにしても
常に起動させて時間を監視させてないと、だめですねー。
ということは、常時電源入れっぱなしにしておかないとだめってこと。
逆にOS(つまりはWindows)は電源が入っていれば常に起動しているはずなので、
それに監視させて、決まった時間にアプリを実行させる(=タスクスケジューラー)
ようになればいいと思います。
また、各種バックアップソフトはさらに細かい設定が出来るので、
バックアップとか同期とかしたいというなら、そちらを常駐させて使う方がよりよいと思います。
もちろんフリーより、有償のソフトの方がさらに高機能なのは言うまでもありません。
(まっつわん) 2018/04/26(木) 13:33
一切エクセルに拘ってないですよ?
フリーソフトで検索したのが、
エクセル自体についてる、自動保存と一緒で120分間隔しかなかったので、
マクロならそれ以上の間隔で出来るかなと思っただけです。
まぁなんにせよ、
常に対象のエクセルを開いてるのは現実的では無いので、
無理だと結論しただけです。
もなこ2さんの、ご注意を拝見する前に、
タスクスケジューラの方を試してみました。
教えてもらったサイトを見て、バッチファイルを作成し、
1日1回自動保存出来る様になりました。ちゃんと動作確認もしました。
ありがとうございます。
(GIA) 2018/04/26(木) 13:58
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.