[[20180411185316]] 『バックアップ保存』(ゾーマ) ページの最後に飛ぶ

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

 

『バックアップ保存』(ゾーマ)

ファイルを自動保存するのはツール−オプションの自動保存でできるのは
知っているのですが、
頻繁に使う大事なファイルを日付を付して閉じるごとにデスクトップに保存したいなと思い、

Sub Auto_Close()
Dim myPath As String
myPath = "C:\Users\Desktop\"
ActiveWorkbook.SaveAs Filename:=myPath & Format(Now(),"yyyy-mm-dd-hh-mm-ss") & ActiveWorkbook.Name
End Sub

を考えて作ったのですが
(不要なものがいっぱいあるかもしれません・・・。)
これで田中.xlsを閉じると
2018-04-11-18-55-00田中.xls
のようになっていいのですが、
日付をファイル名の後ろにつけることはできるのでしょうか。
例:田中 2018-04-11-18-55-00.xls
(Getname?を使えばいけるのかな?)
いろいろ錯誤しましたが、思いつきませんでした。

ご協力よろしくお願いいたします。

< 使用 Excel:Excel2013、使用 OS:unknown >


myPath & ActiveWorkbook.Name & Format(Now(),"yyyy-mm-dd-hh-mm-ss")

って入れ替えるだけでは?
(まっつわん) 2018/04/11(水) 19:20


それは田中 2018-04-11-18-55-00.xlsにならず、
田中.xls2018-04-11-18-55-00 になります。
(拡張子の位置)

(ゾーマ) 2018/04/12(木) 19:08


 もう一つ変数を用意して
拡張子を消してから、最後に拡張子を付けてはどうでしょうか?

 Dim myPath As String
Dim myname As String
myPath = "C:\Users\Desktop\"
myname = Replace(ActiveWorkbook.Name, ".xls", "")
ActiveWorkbook.SaveAs Filename:=myPath & myname & Format(Now(), "yyyy-mm-dd-hh-mm-ss") & ".xls"
(SoulMan) 2018/04/12(木) 20:16

「.xls」に置換だと「*.xlsx」「*.xlsm」なんかのときに困っちゃうような気がするので、FSOの利用や、InStrRev関数などを使ってみることも検討してみるといいかもです。
ついでに、見づらかったのでちょっと整理。

    Sub Auto_Close()
        Dim myPath As String
        Dim buf As String, MyTIME As String

        myPath = "C:\Users\Desktop\"
        MyTIME = Format(Now(), "yyyy-mm-dd-hh-mm-ss")

        With ActiveWorkbook

            'FSOで対応してみる
            buf = CreateObject("Scripting.FileSystemObject").GetBaseName(.Path & "\" & .Name)
            '■■↑↑ 好きなほうだけ残す ↓↓■■
            '後ろからみていって最初に出てくる.(ピリオド)より前を取得してみる
            buf = Left(.Name, InStrRev(.Name, ".") - 1)

            .SaveAs Filename:=myPath & buf & "_" & MyTIME
        End With
    End Sub
(もこな2) 2018/04/13(金) 00:06

日にちがあいてしまいましたが、皆さんありがとうございました。
試してみて良い方を採用したいと思います。
(ゾーマ) 2018/04/18(水) 14:44

コメント返信:

[ 一覧(最新更新順) ]


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