[[20170613180553]] 『VBA ブックの名前変更』(ひろこ) ページの最後に飛ぶ

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

 

『VBA ブックの名前変更』(ひろこ)

はじめまして
教えていただけたら幸いです

同一ホルダ内に複数のブックがあります
このブックの名前の後ろに本日のYYYYMMDD を
付けたしたいです

丸投げで申し訳御座いませんが
宜しくお願いいたします

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


 Dir関数
 Nameステートメント

 で調べてみてください。

 Dir関数
 は、特定のフォルダ以下のファイル一覧取得、既に存在するファイル名か否か判定するのにも使えます。
(カリーニン) 2017/06/13(火) 18:28

>丸投げ

しなきゃいけないほどなのに、エクセルVBAにこだわるのはなぜ?
フリーソフトを探せば、簡単に見つかりそうな気がしますが。

(マナ) 2017/06/13(火) 18:34


Sub 名前変え()
Dim Fname As String
Dim Wbm As Workbook
Dim Wbs As Workbook
Dim buf As String
Application.DisplayAlerts = False

Set Wbs = ThisWorkbook
Fname = Dir(ThisWorkbook.Path & "\*.xlsx*")

Do While Fname <> ""
If Fname <> ThisWorkbook.Name Then
Workbooks.Open ThisWorkbook.Path & "\" & Fname
Set Wbm = ActiveWorkbook

 If buf Like "[0-9]" Then

   On Error Resume Next
    End If

Wbm.SaveAs Filename:=Wbm.Path & "\" & Wbm.Name & Format(Now, "yyyy.m.dd") & ".xlsx"

Wbm.Close
End If
Fname = Dir()
Loop

  Application.DisplayAlerts = True
End Sub
(11) 2017/06/13(火) 19:12

 ブック名かえるのにブックを開く必要はないのでは?
 インデントもしっかりつけましょう。

 あと、
 >If buf Like "[0-9]" Then

 これは必要ですか?
(カリーニン) 2017/06/13(火) 19:20

カリーニン様

喧嘩売ってんの?
(11) 2017/06/13(火) 19:37


 いや、回答者である限り、しっかりしたコードを提示すべきだからです。
 まともな回答者だったら、指摘はコードのブラッシュアップになるのでありがたく
 思うとおもうんですがね。
(カリーニン) 2017/06/13(火) 19:50

必ずバックアップをとってから試してください。

 Option Explicit

 Sub test()
    Dim フォルダ As String
    Dim エクセル As String
    Dim 今日の日付 As String
    Dim 拡張子 As String
    Dim 現在の名前 As String
    Dim 新しい名前 As String

    フォルダ = ThisWorkbook.Path & "\"
    エクセル = Dir(フォルダ & "*.xls")

    今日の日付 = Format(Date, "yyyymmdd")

    Do While エクセル <> ""
        If エクセル <> ThisWorkbook.Name Then
            拡張子 = Mid(エクセル, InStrRev(エクセル, "."))
            現在の名前 = フォルダ & エクセル
            新しい名前 = Left(現在の名前, Len(現在の名前) - Len(拡張子)) & 今日の日付 & 拡張子
            Name 現在の名前 As 新しい名前
        End If
        エクセル = Dir()
    Loop

 End Sub

(マナ) 2017/06/13(火) 22:05


コメント返信:

[ 一覧(最新更新順) ]


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