[[20160726192649]] 『ファイル名の前に作成年を付けたいのですが』(つむつむ) ページの最後に飛ぶ

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

 

『ファイル名の前に作成年を付けたいのですが』(つむつむ)

いつも拝見させて頂いております。
有難うございます。

フォルダーの中に1000個ファイルが有ります。

このファイル名を変えたいのです。

現在のファイル名の前に作成日時の年を付けたいのですが、こんな事が出来るものでしょうか

(例)
現状のファイル名  お菓子の作り方
ファイル名変更後  2015お菓子の作り方

フォルダ名 お菓子

ファイルの種類 エクセル ワード パワーポイント

ファイルの種類 Excal93-2003  Excalブック

宜しくお願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 >ファイルの種類 Excal93-2003

 Excelの間違い?

 この中にはマクロが含まれているブックはありますか?
 いずれにせよマクロになると思います。

 マクロの有無に関しては、HasVBAProjectプロパティでマクロを含むか否かを
 自動的に判定する方法もあります。

 FileSystemObjectを使用しファイルの作成日時を取得する,FileDateTimeを使用し最終更新日時
 を取得する、などの方法があります。
(カリーニン) 2016/07/26(火) 20:33

カリーニン様
ご連絡有難うございます。

Excelの間違いです。申し訳御座いません。

マクロが含まれるファイルは、ございません。

ファイルの作成日時からその年をファイル名の前に付けたいのですが

マクロは、ほとんど初心者ですが頑張ってみたいと思います。

宜しくお願い致します。
(つむつむ) 2016/07/26(火) 20:58


 アップ後、すべてのファイル対象に変更しました。(22:03)

 一例です。
 エクセル ワード パワーポイント に限らず、フォルダ内のすべてのファイルを対象にします。
 フォルダをデスクトップ上の "TEST" というフォルダ名にしています。
 ここは、実際のフォルダパスに変更してください。

 Sub Sample()
    Dim fold As String
    Dim fName As Variant
    Dim fPool As Collection
    Dim yy As String
    Dim er

    Set fPool = New Collection
    fold = CreateObject("WScript.Shell").SpecialFolders("DeskTop") & "\TEST\"   '★
    yy = Format(Date, "yyyy")

    fName = Dir(fold & "*.*")

    Do While fName <> ""
        If fName <> ThisWorkbook.Name Then  '念のため
            fPool.Add fName
        End If
        fName = Dir()
    Loop

    For Each fName In fPool
        On Error Resume Next
        Name fold & fName As fold & yy & fName
        er = Err.Number
        On Error GoTo 0
        If er <> 0 Then
            MsgBox "ファイル名変更に失敗しました" & vbLf & fName
        End If
    Next

 End Sub

(β) 2016/07/26(火) 22:01


 ↑ 実行時の年を付加していました。作成日の年ですね。
 後ほど、改訂版をアップします。

(β) 2016/07/26(火) 22:07


 再掲します。素直に(?)カリーニンさんコメントのFSOを使いました。

 Sub Sample2()
    Dim fso As Object
    Dim fold As String
    Dim file As Object
    Dim yy As String
    Dim er As Long

    Set fso = CreateObject("Scripting.FileSystemObject")
    fold = CreateObject("WScript.Shell").SpecialFolders("DeskTop") & "\TEST"

    For Each file In fso.getfolder(fold).Files
        On Error Resume Next
        file.Name = Format(file.datecreated, "yyyy") & file.Name
        er = Err.Number
        On Error GoTo 0
        If er <> 0 Then MsgBox "ファイル名変更に失敗しました" & vbLf & file.Name
    Next

 End Sub

(β) 2016/07/26(火) 22:32


β様
ご連絡有難うございます。

教えて頂きましたマクロで、思い通りの結果が出ました。
(一個のマクロ設定ファイルは、コメントが出て作成年は付きませんでしたが問題有りません)

しかし、無理だと思って降りましたが何でも出来るものですね
いつもながら、本当に感心するばかりです
教えて頂きましたマクロ、少しずつ調べて見様と思います。

本日は、自宅でのテストです。
明日、会社で本番試してみます。

たくさんの時間を減らす事が出来ると思います。

本当に有難うございました。

(つむつむ) 2016/07/26(火) 22:51


β様

色々テストしてみました。
作成年にして頂いたのですが、更新日時の方が使いかってが良い様に思います。

誠に申し訳ございませんが
更新した年にするマクロをお願い出来ないでしょうか

勝手を言って申し訳御座いませんがお願い出来ないでしょうか

宜しくお願い致します。
(つむつむ) 2016/07/27(水) 00:49


         file.Name = Format(file.datecreated, "yyyy") & file.Name

 これを

        file.Name = Format(file.datelastmodified, "yyyy") & file.Name

 に変更してください。

(β) 2016/07/27(水) 05:02


β様
ご連絡有難うございます。

思い通りの結果が得られました。

本日、会社で実行して見ます。

本当に有難うございました。
(つむつむ) 2016/07/27(水) 05:28


β様

後出し的で、申し訳ございませんが

もう一つ教えて頂きたいのですけれど

コンテンツの作成日時の年の場合はどうなるのでしょうか

宜しくお願い致します。
(つむつむ) 2016/07/27(水) 05:39


 >>コンテンツの作成日時

 コンテンツの作成日時とは、何をさしておられますか?

(β) 2016/07/27(水) 06:05


β様
ご連絡有難うございます。

エクセルファイルを右クリック

プロパティの詳細の中に(下の方)コンテンツの作成日時が表示されております。

宜しくお願い致します。
(つむつむ) 2016/07/27(水) 06:12


 どうもよくわかりません。

 その日付は 最初にアップした file.datecreated そのものなんですが?
 それでは具合が悪いということで、file.datelastmodified にしたわけですよね?

(β) 2016/07/27(水) 06:53


β様

勘違いをしておりました。

申し訳ございません。

これから、会社で更新日時のマクロに挑戦です。

有難うございました。
(つむつむ) 2016/07/27(水) 08:28


β様

コンテンツの作成日時 午前中色々やってみましたがどうしても確認出来ませんでした。
作成日時 file.Name = Format(file.datecreated, "yyyy") & file.Nameで抽出出来ました。
更新日時 file.Name = Format(file.datelastmodified, "yyyy") & file.Nameで抽出できました。

file.datecreatedは、私なりに調べてみましたがコンテンツの作成となっていました。

勘違いとしました件は、見間違いでした。

何とか、コンテンツの作成日を抽出したいのですが

宜しくお願い致します。
(つむつむ) 2016/07/27(水) 13:47


 すでにコメントしたとおり、よくわかりません。

 ・最終更新日は最新に変更して保存した日
 ・作成日は このファイルを最初に新規作成して保存した日

 で、「コンテンツ作成日」とは、なにを、どうした時の日を意図していますか?
 たとえば、○○○をして保存した。でも、その日付は datecreated でも datelastmodified でもない。
 具体的に教えてもらえますか?
 
(β) 2016/07/27(水) 14:19

 もしかして・・・

 具体的に【あれをやった日】をとりたいというテーマではなく、プロパティを見ると
 コンテンツ作成日として、作成日でも更新日でもない日付(時刻)が表示されている。
 この情報を取得したいと、こういう意図ですか?

 「エクセルブック コンテンツ作成日」といったもので検索すると、MSのページも含めて
 いくつかでています。

 この日付は、ファイルの作成日のはずだけど、なんだかおかしく表示されている場合がある。
 こういったことをすれば、こんな日付になる(なるのではないだろうか?)、なんだかおかしいね。

 こんなトーンの記載ばかりですね。

 いずれにしても、βは、「なんだかおかしな日付で表示されているコンテンツ作成日」、その
 「おかしな日付」を取得するすべをしらないので、これ以上はお手伝いできません。

 ほかの回答をお待ちください。

(β) 2016/07/27(水) 14:35


 横から失礼。

 私のところにこのようなブックがあった。
 (もともとあったブックをExcelで読み込み、別の場所に名前を付けて保存で新規保存したと思われる)

 作成日時                 2016/5/27 10:44:56
 更新日時                  2016/5/27 10:32:39
 アクセス日時              2016/5/27 10:44:56

 コンテンツの作成日時      2003/5/29 10:45

 上の物は「ファイル」を作成した日付、下の物はブックの中身を作成した日付ではないか?
(ねむねむ) 2016/07/27(水) 14:39

更に横から失礼します。

「なんだかおかしな日付で表示されているコンテンツ作成日」は
file.BuiltinDocumentProperties(11)で出るようですね。

ですので、
file.Name = Format(file.BuiltinDocumentProperties(11), "yyyy") & file.Name
となるかと思われます。

わたしのファイルにも作成日時とマッチしないものがありましたが、
コンテンツの作成日時が作成日時以前の日付となっており、中身についてはよくわかりませんでした。。

【追記】
Format(BuiltinDocumentProperties(11), "yyyy")となっていたので
Format(file.BuiltinDocumentProperties(11), "yyyy")と修正しました。

(かぼ) 2016/07/27(水) 14:44


β様
ねむねむ様
かぼ様

色々と教えていただき有難うございます。

コンテンツの作成日時は、よく分からない項目だと理解をしましたので、使用しない事に致しました。

お時間を取って頂き有難うございました。

今回は、β様から教えて頂きました更新日時のマクロを使用させて頂きます。

有難うございました。
(つむつむ) 2016/07/27(水) 15:12


コメント返信:

[ 一覧(最新更新順) ]


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