[[20110324224118]] 『任意のファオルダへバックアップを作成』(初心者) ページの最後に飛ぶ

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

 

『任意のファオルダへバックアップを作成』(初心者)
 Excel2003  WindowsXPを使用しています。 

 会社で自分のPCのマイドキュメント内にある作業表というファイルがあります。
 自分のPCの中のファイルが原本で社内のLAN内のサ−バーの共通事項という
 フォルダ内へ複写し他のメンバーが誰でも見れるようにしてあります。
 使いかたは自分のPCの作業用ファイルを変更し、LAN内の共通事項ファルダ
 内の作業表というファイルへも上書き保存をしています。

  今回の質問ですが、自分のPCのファイルを上書き保存した際に
 共通事項ファルダ内の作業表ファイルにも上書き保存するにはどうすれば
 いいでしょうかということです。
 全文検索で確認したのですが
 名前付けて保存→ツール→全般オプションでのバックアップ作成・・の方法は
 同じフォルダ内にバックアップが作成されるとありました。
 どのようなマクロをつくればいいでしょうか


 VBAを使えば 可能な処理です。コードも経験があれば、比較的容易です。
 Workbookの BeforeSaveイベントを利用します。
 このワードから、検索してください。

 知らなければ、ミラーリングソフトを試してみては?
http://www.vector.co.jp/soft/win95/util/se061150.html
 ↑参考

 因みに
 >名前付けて保存→ツール→全般オプションでのバックアップ作成
 は、同じブックを二つ作成しているわけではありませんよ!!

 ichinose

 ichinoseさん。ありがとうございます。
 完全に間違えていました。
 >因みに
 >名前付けて保存→ツール→全般オプションでのバックアップ作成
 >は、同じブックを二つ作成しているわけではありませんよ!!
 の意味がわかりました。
 誤って上書き保存した場合に、元のファイル状態のファイルがあるという
 ことだっったんですね。まったく同じファイルという意味でバックアップ
 だと思ってました。2世代管理というか・・・そんな機能ですね。
 Workbookの BeforeSaveイベントというのを確認してみます。(初心者)


 Workbookの BeforeSaveイベント 調べてみましたがよむわからないので
 違う角度で探してみました
 自分のPCのドライブ Dのフォルダ:保存 というところに 
 aaaというファイルを作っておき、そこへ上書き保存を
 したいと考えてみました。

 Sub 保存2()
 ChDir "\\d\保存”
    ActiveWorkbook.SaveAs Filename:="aaa”
 End Sub

 実行すると「パスが見つかりません」というエラーに

 なります。
 どういう風にコードを書けばいいでしょうか
 (初心者)

 エラーメッセ維持は正確に問題点を指摘していると思います。
 ChDir "\\d\保存”
 というパスがないのではないですか?
  保存フォルダが Dドライブであるなら、"D:\保存" です。
 (Mook)

 >自分のPCのドライブ Dのフォルダ:保存
 Sub 保存2()
     thisWorkbook.SaveAs Filename:="d:\保存\aaa.xls”
 End Sub

 ChDir "\\d\保存”
 やるなら
    ChDrive "d:"
    ChDir "d:\保存"
 ですが、保存するだけですからカレントフォルダを変更する必要はないです。

 >Workbookの BeforeSaveイベント 調べてみましたがよむわからないので
 これを使えば

 >自分のPCのファイルを上書き保存した際に
 >共通事項ファルダ内の作業表ファイルにも上書き保存する
 これは、実現可能です。

 これは、標準モジュールではなく、ThisWorkbook のモジュールに記述します。

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 '      ここに別ファイル名で保存するコードを記述します。
    Const bknm = "本来のブック名"
    If ThisWorkbook.Name = bknm Then
       ThisWorkbook.SaveCopyAs "フルパス"
    End If
 End Sub

 勿論、

  Const bknm = "本来のブック名"
 や
 ThisWorkbook.SaveCopyAs "フルパス"

 には、本来のブック名には、ご自分でつけた名前、フルパスも
 共通事項フォルダ内の作業表という名前のフルパスを指定します。

 ichinose

 Mookさん。ありがとうございます。ichinoseさんの
 >thisWorkbook.SaveAs Filename:="d:\保存\aaa.xls”でもご提示して
 頂いている D:\保存という表現 確認しました。

 ichinoseさん。ありがとうございます。
 >thisWorkbook.SaveAs Filename:="d:\保存\aaa.xls”で今のファイルを
 d:\保存\aaaに保存(上書き保存)できました。
 一歩前進しました。
 今は自宅ですので、月曜日に出社して会社の環境でご提示のコードを
 実行してみます。(初心者) 
  


 よく見かける質問ですので、ネットで検索するといろいろと見つかると思います。
 以前別の掲示板で回答したものですが、コピーを利用した例です。
 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.EnableEvents = False
    ThisWorkbook.Save
    Application.EnableEvents = True

    With CreateObject("Scripting.FileSystemObject")
        .CopyFile ThisWorkbook.Path & "\" & ThisWorkbook.Name, "D:\保存\aaa.xls", True
    End With

    Cancel = True
 End Sub

 FileSystemObject を使用しなくとも FileCopy でできるかと思ったのですが、
 試したときにエラーが出たので、こちらを使用しています。
 (Mook)

 Mookさん。再度のご支援ありがとうございます。
 上記のコードで"D:\保存\aaa.xls"に保存できました。
 コードの内容は正直あまりわかりませんが
 マクロの記録で「上書き保存」を記録したらThisWorkbook.Saveが記録されましたので
 今のファイルを上書き保存をするコードだと理解しました。
 >Private Sub Workbook_BeforeSave〜は保存する際は以下の処理をする 
 と覚えました。
 全文検索で
  =LEFT(CELL("filename",A1),FIND("]",CELL("filename",A1)))
 これでファイルまでのフルパスが表示できそうなので、出社した
 際にパス確認しMookさんや、ichinoseさんのコードを実行してみます。
 (初心者)


 補足説明ですが、上書き保存の部分は良いですが、保存した後にファイルを「コピー」
 しています。

 Ctlキーを押してファイルをフォルダからフォルダにドラッグ&ドロップしてコピーするのと
 同様の処理です。
 ですからEXCEL ファイルとしては一時的にでも、他の名前になるわけではありません。
 (Mook)

 Mookさん。たびたびありがとうございます。なるほどなあ・・・です。(初心者)

 >EXCEL ファイルとしては一時的にでも、他の名前になるわけではありません。
 という観点からすれば
 Sub 保存2()
     thisWorkbook.SaveCopyAs Filename:="d:\保存\aaa.xls”
 End Sub

 これにすればよいです。

 ichinose


コメント返信:

[ 一覧(最新更新順) ]


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