• ベストアンサー

ファイル名を日付を利用して更新するには

マイドキュメントにあるTESTというフォルダの中のTEST0508.XLSというファイルをデスクトップにショートカットを作り 開いていますが、このファイルを開き操作した後保存する時に、月末だったら 次の月の名前で新しいファイル名をつけて保存するにはどんなマクロを書けば良いでしょうか? またこの時 デスクトップ上のショートカットの名前を同時に書き換えることは可能でしょうか? ただし、ThisWorkbook の BeforeClose には 他のHDにバックアップをとるための記述があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

月の判定 Sub test() Dim FPATH As String Dim FName As String FPATH = "C:\xxxxx\xxx\xxx" FName = "TEST" '翌月の判定 If Month(Date) <> Month(Date + 1) Then FName = FName & Format(Date + 1, "yymm") Else FName = FName & Format(Date, "yymm") End If ThisWorkbook.SaveAs FILENAME:=FPATH & "\" & FName & ".xls" End Sub ショートカットの作成と取得は下記参照。 http://www.geocities.co.jp/SiliconValley-SanJose/9236/subdoc2/0209.htm サンプルの objSC.targetPath に新しいファイルパスを設定すればリンク先の書き換えが可能かも。

tommy-pie83
質問者

お礼

ありがとうございます。 これって たとえば 12月で年が変わったときも有効でしょうか?

tommy-pie83
質問者

補足

分かりやすかったので参考にして私なりのマクロをかいてみましたが Format(Date+1,"yymm")では翌月になりませんでした。そこで たとえば 年末などは 29日に処理を行い 4日までは ファイルを開かないからと +7 に変え、パソコンの内臓時計を12月29日にしてファイル名も"0512"に変えて 実行してみたら ちゃんと "0601" に名前が変わりました。 ショートカットの作り方はこれから勉強してみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • komet163
  • ベストアンサー率51% (22/43)
回答No.3

こんにちは。 先ず、何をもって月末とするかが引っかかります。 月が変っての最初の起動時に、ファイル名をチェックして更新したほうがいいのでは。 ショートカットについては、リンク先が変ってしまうので、ショートカットの作り直しになると思います。 字面だけ変更して、リンク先は Windows の自動検索で・・という手もあるかもしれません。 以下は、保存方法が手動操作かマクロからなのか不明だったので、 起動時にチェックし、別名保存するようにしてあります。 またショートカット名は決め打ちで、常に同じものです。(リンク先だけ変る) Private Sub Workbook_Open() Dim sDate As String Dim sNewPath As String Dim sDesktop As String Dim sNewName As String Dim sWorking As String Dim FS As Object Const sLinkName As String = "~へのショートカット" With ThisWorkbook sDate = Format(Date, "yymm") & ".xls" sNewPath = Left(.FullName, Len(.FullName) - Len(sDate)) & sDate If Not LCase(.Name) Like "*" & sDate Then .SaveAs sNewPath 'ショートカットの作成 Set FS = CreateObject("Scripting.FileSystemObject") sNewName = FS.GetFile(sNewPath).Name sWorking = FS.GetParentFolderName(sNewPath) With CreateObject("WScript.Shell") sDesktop = .SpecialFolders("Desktop") With .CreateShortcut(sDesktop & "\" & sLinkName & ".lnk") .TargetPath = sNewPath .WorkingDirectory = sWorking .Save End With End With Set FS = Nothing MsgBox "月初めの処理を実施しました。" End If End With End Sub

tommy-pie83
質問者

お礼

ありがとうございます。 皆さん早く回答いただいたのに仕事に行っていてネットをのぞけませんでした。遅くなってすみません。 このファイルほぼ毎日データの追加が必要で不用になるデータ(2年を過ぎたら消去可)も毎日です。でもさすがに毎日消すのは面倒なので月末(日、祝日は休み)の終業前に一か月分の不用データを消去(ここまではマクロ)し 新しいファイル名をつけショートカットを作り直していますが 出来ればそれらを自動で出来るようにマクロを書き直そうと思い立ちました。 もちろん、月初めに処理してもいいのですが 始業時にパソコンを立ち上げるのは 私ではなく コンピュータの知識のない同僚なので できればその前に処理を済ませ 新しい名前で保存できればと思っています。

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

SaveAsの設定で Filename:="絶対パス\TEST" & Foramt(Date,"yymm") & ".XLS" の様にすれば保存時の日付で設定できます。 月末を次の月ならDate+1にすればOKですが..

tommy-pie83
質問者

お礼

ありがとうございます。 別のHDにバックアップする時にはこの方法でやっています。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル・ブック共有のファイル終了時に

    エクセルのVBA、万年初心者のものです。m(__)m エクセルのファイルをネットワーク上で「ブックの共有」で使いたいと思っているのですが、「ブックの共有」をオンにしていると、終了時に毎回「この場所に○○.xlsという名前のファイルが既にあります。置き換えますか?」と出てきます。 ファイル自体はマクロを有効にしていて、毎回、置き換える必要がないので「いいえ」しか選ばないので、なんとか、このメッセージをださないようにしたいのですが。 ThisWorkbook のPrivate Sub Workbook_BeforeClose の中に、Application.DisplayAlerts = False を入れてみたりしましたが、うまくいきません。 なにかいいメソッドがないでしょうか?

  • カレントブックのファイル名の取得

    早速ですが。 カレントブック(例:test.xls)の名前をどうやって取得できますか。 マクロ(code)にカレントブック名を固定値(test.xls)で指定していますが、 下記のように、改善したいと思いますが、 ================================= test.xlsのマクロに PCvsFileName="test.xls" Windows("PCvsFileName").Activate ================================= 該当xlsファイル名は常に変わるから、カレントブックのファイル名の取得方法が 知りたいです。 よろしくお願いします。

  • エクセルで新たなファイルを開くマクロ

    【質問:1】 ○○○.xlsというファイル上で、 ボタンを押すと、 ×××.xlsというファイルを ”マクロを有効にする”で開いて、 (どちらもマイドキュメントに保存してあります) かつ、 ○○○からの自動リンクを反映させ更新し、 (通常ですとダイヤルログボックスがでますよね) ×××のシート1のA1セルをアクティブにする というマクロはどのように書けばいいでしょうか? 【質問:2】 ×××.xlsにおいて、 ボタンを押すと、 ×××を”保存せずに閉じ”て、 かつ○○○.xls(既に開いてあります)の シート1のA1セルをアクティブにする というマクロはどのようにかけばいいでしょうか?  よろしくご教示のほどお願い致します。

  • Excelのマクロで[名前を付けて保存]に候補のファイル名を表示したい

    いつもながらExcelのマクロについて質問です。 Dim 保存 As FileDialog Set 保存 = Application.FileDialog(msoFileDialogSaveAs) If 保存.Show = -1 Then 保存.Execute End If Set 保存 = Nothing これで[名前を付けて保存]が表示されますよね。 ここで質問です。 この画面でファイル名の候補を 例えば test のように表示させるには どうしたらいいのでしょうか。 そのまま[保存]を押せば test.xls で保存されるし ちょっと手を入れて test2.xls にもできるようにしたいのです。 また、もし同じ名前のファイルがすでにあれば 上書きするかどうかの確認表示をさせることにより 上書きしたり、別の名前に変えたりしたいと思います。 以上、よろしくお願いいたします。

  • コマンドプロンプト ファイル名

    デスクトップ上にある、Aという名前のフォルダの中のCSVファイル(名前が一定しない)をTEST>.xlsに変える場合は、どのように書けばいいのでしょうか? また、そのファイルを開きたいのですが・・・ コマンドプロンプトを使えばいいらしいのですが、やり方がわかりません。

  • A1セル入力値をファイル名先頭に追加したい。

    マクロ初心者で色々な事例を組み合わせて次のマクロを 作成しました。 A.xlsを開いて一部加工したファイルをB.xlsで保存し さらに一部を消去しC.xlsで保存するマクロです。 今回、B.xlsおよびC.xlsの先頭にA.xlsのA1セルに入力 された6桁の数字を付加して保存したいのですが・・・。 例えばA1セルが123456の時は 123456B.xls 123456C.xls どなたか教えてください。 現在のマクロ Sub Macro2() Dim strFilePath As String Dim strFileName As String Dim flg As Boolean '◆保存するパスの設定 strFilePath = ThisWorkbook.Path & "\" '◆保存するファイル名の指定 strFileName = "B" On Error Resume Next Workbooks(strFileName).Activate ThisWorkbook.SaveAs strFilePath & strFileName '◆個人情報消去 Range("D42:E49").Select Selection.ClearContents Range("d1").Select strFileName = "C" ThisWorkbook.SaveAs strFilePath & strFileName Application.Quit End Sub

  • Excel CSVファイル セル名を名前として保存

    いつもありがとうございます。エクセル2003XPです。 毎回USBメモリーに上書きされてくる、同名のCSVファイルを別エクセルファイルに読み込む作業をしております。 その作業は外部データの読み込みを記憶マクロとして問題ないのですが、エクセルに読み込んだCSVファイルは、かぶらないようにそのつど、Kill を使い削除しております。 ただ完全に削除なので対策として、 読み込んだCSVファイルの1行目のセル名をファイル名として名前を変えて保存、 PCの"C:\Documents and Settings\元データ に毎回CSVもしくは、エクセルファイルに名前を変更して保存する処理をボタンひとつで出来ないか、考えております。 ネットで色々と検索をしておりますが、勉強不足です。 参考でサンプルマクロは見つけましたが、どのように変更すれば良いか分かりません。ご享受いただければ助かります。 CSVファイル名 : log001.csv(毎回、USB) 保存したいファイル名 : CSVファイルを開いた時のA1のセル名(日付です) 保存場所 : PCのマイドキュメントの元データファイル 保存したいファイル形式 : CSVもしくはExcelファイル Sub THSFILE_SAVE() Dim myFname0 As String Dim myFname As String On Error GoTo ERRH '現在のファイル名取得 myFname0 = ThisWorkbook.Name '新しいファイル名をセルA1の値とする myFname = Sheets(1).Range("A1").Value '同じ階層に保存 ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & myFname If myFname0 <> myFname & ".xls" Then '前の名前のファイルを削除する場合は下の一行を有効にしてください 'Kill ThisWorkbook.Path & "\" & myFname0 End If Exit Sub ERRH: End Sub この処理はCSVファイルの読み込み先のエクセルファイルから、行いたいと考えております。 よろしくお願致します。

  • ファイル名を変数として取り扱いたい

    ファイル名が変更されても正常に動作するようにしたい <処理概要> A.XLS、B.XLS、C.XLSというファイルがあります。 A.XLSにB.XLS、C.XLSのシートを取り込む処理をしています。 マクロはA.XLSで起動、処理しています。 A.XLSのファイル名を変更されても動くようにできるのでしょうか。 ご指導のほど、よろしくお願いいたします。 <ファイルの取り込み処理> For Each fName In FSO.GetFolder(MyFolder).Files If FSO.GetExtensionName(fName) = \\\"xls\\\" And _ FSO.GetBaseName(fName) <> \"A\" Then Set wBook = Workbooks.Open(fName, 0, True) For 番号 = 1 To Worksheets.Count wBook.Worksheets(番号).Copy _ after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Next 番号 wBook.Close False End If

  • EXCELファイルのバックアップ作成方法についての質問です。

    EXCELファイルのバックアップ作成方法についての質問です。 最近、フリーズが多いため、15分に1回程度バックアップを取りたいと思っています。 何か、マクロなどの方法やフリーソフトはないでしょうか? 今、15分毎に自動保存は実行しています。 多くのマクロを実行しているため、作業を戻すことができません。 要望としては、 1.15分毎に指定したフォルダの中にバックアップファイルが作成される。 2.現在の作業中のファイルは保存されない。 3.バックアップファイルは毎回違う名前にする。 (ABC.xlsファイルのバックアップの場合、ABC_bk1.xls、ABC_bk2.xlsのような感じです。) 3は可能でしたらよろしくお願いします。 多くの要望を出してしまい申し訳ないのですが、何卒よろしくお願いいたします。

  • マクロ VBA ファイル名を連番でつけたいのですが

    マクロ初心者なので教えて頂けるとうれしいです。 保存先フォルダにファイル名を自動で名前をつけて保存させるところまでできたのですが、 保存先フォルダに同名フォルダがある場合に、 もともと指定しているファイル名のお尻に連番をつけていくようにしたいのですが・・・ 例) 選択したシートをコピーして、 「A1+B1+見積書.xls」 という名前をつけて毎回保存していくのですが、 同名のファイルがある場合、 「A1+B1+見積書+1.xls」 「A1+B1+見積書+2.xls」 「A1+B1+見積書+3.xls」    …というふうにお尻に自動で連番をつけて 保存できるようにしたいのです。 宜しくお願い致します!

このQ&Aのポイント
  • MFC-J6973CDWを使用している際に電源がすぐに落ちる問題が発生しています。この問題は特定の機種のファームウェアを更新することで解決する可能性があります。
  • ブラザーのサポートのページには同様の問題の記載がありますが、対処方法については掲載されていません。
  • 対処方法をご存じの方がいらっしゃれば、教えていただけると幸いです。
回答を見る

専門家に質問してみよう