あるExcelデータ(クライアント側)を起動時に自動的にサーバーにバックアップしようと思ってマクロを組んでいますが、なかなかウマくいきません。
何かいい方法はありませんか?
マクロはこんな感じです。
*****************************
Public Sub Auto_Open()
Dim ThisName As String 'バックアップ元ファイル名
Dim ThisPath As String 'バックアップ元パス名
Dim BackupName As String 'バックアップ先ファイル名
Dim BackupPath As String 'バックアップ先パス名
ThisPath = ThisWorkbook.Path
ThisName = ThisWorkbook.Name
BackupPath = "\\sv1\職員用\Backup"
BackupName = Left(ThisName, Len(ThisName) - 4) & Format(Now, "-yyyymmddhhmmss") & ".xls"
ThisWorkbook.SaveAs Filename:=BackupPath & "\" & BackupName
End Sub
*****************************
これだとバックアップした方のExcelが起動してしてしまうのですが・・・
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
こんばんは。
Wendy02です。>ただ、ネットワークを切断してテストしてみると
すみません。それは、私は忘れていました。
簡単に、Dir でも出来たと思いますが、いくつか解決策があると思います。けれども、私の書いた骨子は、Excel外の外部コマンドでコピーをさせるということですから、Error トラップは考えていなかったけれども、アイデアとしては悪くはないかもしれません。
(私の環境は、途中までやってやめてしまったので、なかなか、ネットワーク化させませんもので、それは実験していないのです。)
ところで、このコードの説明がきちんとなされていなかったようですが、
If InStr(1, ThisPath, "BackUp", vbTextCompare) > 0 Then Exit Sub
バックアップは、ついうっかり、バックアップ側で開いてしまうことがありますね。その時、起動時のイベントマクロが働いては困るわけで、それで、そのブックの存在しているフォルダに、BackUpという単語があれば、自動起動はやめるということを考えています。
>簡単に、Dir でも出来たと思いますが、いくつか解決策があると思います。
そう言われてみれば、そうですね。
バックアップ(コピー)のことばかり気にしてて、すっかりDirについて忘れてました。(笑)
それから
If InStr(1, ThisPath, "BackUp", vbTextCompare) > 0 Then Exit Sub
のご説明、ありがとうございます。
漠然と、「バックアップしたファイルを開くと、さらにバックアップされてうっとうしいなぁ~」
とは思ってましたが、それを回避することまで想定なんてしていませんでした。
そこまで考えてプログラムは作らないといけないんですね。
勉強になりました。
A No.4のka_na_deさんのところにも書きましたが
また明日以降もいろいろと別の質問もしますが
懲りずにまた教えてください。
よろしくお願いします。
ありがとうございました。
No.4
- 回答日時:
#2です。
少しでも参考にしていただけたなら幸いです。
コメントを拝見しましたが、当然予想される問題ですね。
こういった例外処理はおそらく定番だと思いますが、
私はド素人なもので、これ以上のコメントは控えさせて頂きます。
すっきりと解決されることを、お祈りいたします。
>こういった例外処理はおそらく定番だと思いますが、
定番の処理なんですね、こういうのは。
しっかり勉強します(汗)
>私はド素人なもので、これ以上のコメントは控えさせて頂きます。
ka_na_deさんがド素人なら、こちらはドドド素人ですね(笑)
プロフィールを拝見しましたが、35日で135件も回答されてるなんて
とても「ド素人」とは思えません。
また明日以降もいろいろと別の質問もしますが
懲りずにまた教えてください。
よろしくお願いします。
ありがとうございました。
No.3
- 回答日時:
#1 です。
うっかり忘れていたことですが、
'Sub Auto_Open() の中で、ThisPath の後に、
'ThisPath = ThisWorkbook.Path
If InStr(1, ThisPath, "BackUp", vbTextCompare) > 0 Then Exit Sub
'なお、TextCompare を入れておきます。
そうしないと、Auto_Open が、また起動してしまいます。
この回答への補足
ありがとうございます。
文の内容や意味するところはわかるんですが
自分にはあまりにも高度な内容なので
なぜこの処理も必要なのかよくわかりません(泣)が
エラーにならないようにこの文も入れておきます。
とても助かりました。
これからもよろしくお願いします。
ありがとうございました。
No.2
- 回答日時:
ファイル操作に関して、全くの素人です。
ThisWorkbook.SaveAs Filename:=BackupPath & "\" & BackupName
を
ThisWorkbook.SaveCopyAs Filename:=BackupPath & "\" & BackupName
に変更する方法ではだめでしょうか?
スタンドアローンのPCで模擬テストしたところ
問題ないように見えましたが・・・
間違ってたらごめんなさい。
ありがとうございます。
「SaveAs」じゃなくて「SaveCopyAs」なんてモノがあるんですね。
まったく知りませんでした(泣)
テストしてみたら、正常な場合はできました。
ただ、ネットワークを切断してテストしてみると
'(ファイル名)'にアクセスできません。
ファイルは読み取り専用であるか、
または読み取り専用の場所にアクセスしようとしています。
または、サーバー上に保存されているドキュメントから
応答がありません。
というメッセージ(+再試行ボタンとキャンセルボタン)が表示されるので
スタンドアローンでならOKなんですかね、やっぱり。
もちろん、A No.1のWendy02さんの場合でも
エラー(番号 -2147023665)が起きてしまいますが
On Error ステートメントで全エラーを無視しちゃってます。
(ホントにいいかは?ですが・・・)
ありがとうございました。
No.1
- 回答日時:
こんばんは。
>ThisWorkbook.SaveAs Filename:=BackupPath & "\" & BackupName
ここが変ですね。
SaveAs の後は、保存先側に、ブックが移ってしまいますから、もう一度、元のブックを戻すという方法もあるのですが、同じ、Auto_Open が働いてしまいます。
それを、オプションなどを加えて働かないようにする方法もあるとは思いますが、以下のように、Excelの適用範囲から外すことで、大幅なバックアップの時間の短縮になります。
>ThisWorkbook.SaveAs Filename:=BackupPath & "\" & BackupName
これを以下の変えてみたらどうでしょうか?Shell でもかまわないのですが、一応、FileSystemObjectを使いました。試してみてはいませんが、考え方は分かっていただけるかと思います。
Set objFso = CreateObject("Scripting.FileSystemObject")
objFso.Copyfile ThisWorkbook.Path & "\" & ThisWorkbook.Name, BackupPath & "\" & BackupName, True
Set objFso = Nothing
お~、すご~い!
見事にできました!
感動ものです!
ただ、
Set objFso = CreateObject("Scripting.FileSystemObject")
objFso.Copyfile ThisWorkbook.Path & "\" & ThisWorkbook.Name, BackupPath & "\" & BackupName, True
Set objFso = Nothing
が、何を意味してるかはさっぱりわかりませんが(笑)
わかるようにがんばって勉強していきます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
iCloud+のオファーを使用という...
-
SDカードの保存先のファイル名
-
google フォトでwifi が繋がっ...
-
ギガバイト BIOS更新について
-
いきなりGoogleフォトがバック...
-
バックアップ用HDDは内蔵?外付...
-
Excel 起動時自動バックアップ
-
グーグルドライブのバックアッ...
-
バックアップもとっていない消...
-
iPhoneですが、近くの漫画喫茶...
-
outlook expressのメール仕分け...
-
Win7 システムのバックアップで?
-
Googleフォトで一部バックアッ...
-
あいふぉんのパスワード忘れた…...
-
今すぐバックアップしたら、今...
-
ハードディスクのバックアップ
-
バックアップは何回でもできま...
-
iCloudの容量がいっぱい? 今年...
-
【iPhone7】iTunesでも丸ごとバ...
-
私はiphone7を使用中ですが、も...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
iCloud+のオファーを使用という...
-
SDカードの保存先のファイル名
-
Android のバックアップの方法...
-
Androidスマホを使っていますが...
-
google フォトでwifi が繋がっ...
-
電源の付かない携帯からデータ...
-
iTunesからアイフォンをバック...
-
Windws10でiTunesが起動できな...
-
グーグルドライブのバックアッ...
-
iPhoneのバックアップについて...
-
WindowsXPでのシステムそのまま...
-
NEC製ノートパソコンのバッ...
-
LINE バックアップの文字化け
-
iPhoneですが、近くの漫画喫茶...
-
富士通のワープロoasys のバッ...
-
教えて下さい‼︎ Line機能の話で...
-
SSDと外付けHDDでミラーリング...
-
ディレイドバッチとは?
-
バックアップ用HDDは内蔵?外付...
-
アイフォーンを使ってWindowsの...
おすすめ情報