- ベストアンサー
エクセル:自動保存の方法:sheet1の「A1」の文字をファイル名に(2)
私のNo.2042239 質問に関係しますが、次のケースについても教えてください。 ◆「sheet1のセルA1に =”ファイル名”&TEXT(NOW(),"yymmddhhmm")」 と入れています。これによりブックを閉じるときにバックアップ用フォルダにセル「A1」に表示される文字をファイル名として自動保存をしたいのです。 ◆「No.2042239」との違いは、今回はネットワークの別のパソコンではなく、『自分のパソコン』の任意のバックアップ用フォルダに自動保存したいことです。 ※(「No.2042239」のご指導では、sheet1のセルA1に 「TEXT(NOW(),"yymmddhhmm")」は不要とのことでした。) 以上のことについてご指導お願いいたします。「No.2042239」より基本的なことなので、自分でできると思いきやできませんでした。初心者ですので、わかりやすくお願い申し上げます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>(1) ("Desktop")のかわりに(c:\・・・)とか(フォルダ名)とか入れてみましたが、うまくいきませんでした。 CreateObject("WScript.Shell").SpecialFolders("Desktop")でデスクトップを指定しています。普通にパスを書くと長いですしユーザープロファイルによって変わってしまいますし・・。 >(2) 『Sheet1』のセル「A1」のファイル名としたいのですが、現在のセル”「A1」にファイル名だけが入っている場合”そのとき開いていたシートのセル「A1」の文字がファイル名になってしまいます。 Range("A1").Valueだけだとアクティブシート上の指定になります。シートを固定したい場合はシート名が必要になります。 Sheet1のセル「A1」にファイル名だけが入っている場合 保存先が「C:\テスト」の場合 Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.SaveAs Filename:="C:\テスト" & "\" & Sheets("sheet1") _ .Range("A1").Value & Format(Now, "yymmddhhmm") & ".xls" End Sub
その他の回答 (3)
- keirika
- ベストアンサー率42% (279/658)
例えばCドライブの直下に作る場合、 'NetPath = ThisWorkbook.path & "\" 'を NetPath = "c:\" で出来ると思うのですが・・・・
お礼
keirikaさん、ご回答ありがとうございます。 そうなのですね。難しく考えてたといいますか、理解不足を恥じ入るばかりです。 しかし今回は、イベントによるご指導を別の方からいただき、その内容で解決させたいと思います。ご回答くださいましたことを感謝申し上げますとともに勉強にもなりました。心よりありがとうございます。
ThisWorkbookのモジュールに。 セル「A1」にファイル名だけが入っている場合 Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.SaveAs Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") _ & "\" & Range("A1").Value & Format(Now, "yymmddhhmm") & ".xls" End Sub セルの入力値に頼らない場合 Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.SaveAs Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") _ & "\" & Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 3) & Format(Now, "yymmddhhmm") & ".xls" End Sub 保存先フォルダをデスクトップとしての例ですので、保存先は適所変更して 下さい。
補足
SuperMildさん、引き続きお世話になります^^ありがとうございます。 (1) ("Desktop")のかわりに(c:\・・・)とか(フォルダ名)とか入れてみましたが、うまくいきませんでした。C直下に入ってしまいます。うまく任意のフォルダに入る方法を教えてください。 (2) 『Sheet1』のセル「A1」のファイル名としたいのですが、現在のセル”「A1」にファイル名だけが入っている場合”そのとき開いていたシートのセル「A1」の文字がファイル名になってしまいます。 以上、2点、何卒ひきつづきご指導ください。 お待ちしています。
- aminaka
- ベストアンサー率20% (2/10)
Sub 保存() パス = ActiveWorkbook.Path 名前 = Range("a1") 保存名 = パス & "\" & 名前 & ".xls" ActiveWorkbook.SaveAs Filename:=保存名 End Sub というマクロでで如何でしょうか
補足
ご回答、ありがとうございます。 私の勉強不足で的外れの質問ならごめんなさい。 名前を『sheet1』の「A1」とすることをお教えくださいますでしょうか?お願いいたします。
お礼
SuperMildさん、ありがとうございました。 今回のご指導でよくわかりました。また、うまくいきました。心より感謝申し上げます^^