Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9998 / 13644 ツリー ←次へ | 前へ→

【24143】ファイル名を日付にする 初心者 05/4/13(水) 11:52 質問[未読]
【24144】Re:ファイル名を日付にする おさる 05/4/13(水) 12:42 回答[未読]
【24147】Re:ファイル名を日付にする Kein 05/4/13(水) 13:32 回答[未読]
【24148】Re:ファイル名を日付にする 小僧 05/4/13(水) 13:58 回答[未読]
【24209】Re:ファイル名を日付にする 初心者 05/4/15(金) 16:45 お礼[未読]
【24218】Re:ファイル名を日付にする ウッシ 05/4/15(金) 20:25 発言[未読]
【24224】Re:ファイル名を日付にする 初心者 05/4/15(金) 23:41 お礼[未読]
【24225】Re:ファイル名を日付にする 小僧 05/4/15(金) 23:44 回答[未読]
【24250】Re:ファイル名を日付にする YN61 05/4/17(日) 13:45 質問[未読]
【24253】Re:ファイル名を日付にする Hirofumi 05/4/17(日) 19:07 回答[未読]
【24258】Re:ファイル名を日付にする YN61 05/4/17(日) 21:57 質問[未読]
【24266】Re:ファイル名を日付にする 小僧 05/4/18(月) 9:18 回答[未読]
【24359】Re:ファイル名を日付にする 初心者 05/4/20(水) 15:27 お礼[未読]

【24143】ファイル名を日付にする
質問  初心者  - 05/4/13(水) 11:52 -

引用なし
パスワード
   エクセルのVBAであるデータのファイルをbackupというフォルダにコピーをして、そのファイル名をコピーした日付_時間_分といった形で名前を変えたいのですがどうすればいいでしょうか?

【24144】Re:ファイル名を日付にする
回答  おさる  - 05/4/13(水) 12:42 -

引用なし
パスワード
   とりあえず、現在時刻を変換するところだけです。

msgbox Format(Now, "yymmdd_h_m")

【24147】Re:ファイル名を日付にする
回答  Kein  - 05/4/13(水) 13:32 -

引用なし
パスワード
   アクティブブックをそのように処理するとして、

ActiveWorkbook.SaveCopyAs "C:\BackUp\" & _
Format(Now(), "yymmdd_hhmmss") & ".xls

【24148】Re:ファイル名を日付にする
回答  小僧  - 05/4/13(水) 13:58 -

引用なし
パスワード
   ▼初心者 さん:
データファイルが「.xls」や「.txt」などの拡張子がある時のみですが…。

Sub DataBkup()

Dim FSO As Object
Dim MyFile As Variant
Dim MyPath As Variant
Dim vFile As Variant

  MyFile = "C:\test.txt"   'データファイルをフルパスで指定
  MyPath = "C:\DATA\"     'コピー先のフォルダを指定
  
  Set FSO = CreateObject("Scripting.FileSystemObject")
  FSO.CopyFile MyFile, MyPath

  Set vFile = FSO.GetFile _
  (MyPath & Right(MyFile, Len(MyFile) - InStrRev(MyFile, "\")))

  vFile.Name = Format(Now(), "mmdd_hh_mm") & Right(MyFile, 4)
  
  Set vFile = Nothing
  Set FSO = Nothing
End Sub
  
  Set vFile = Nothing
  Set FSO = Nothing
End Sub

こんなのはどうでしょうか?

【24209】Re:ファイル名を日付にする
お礼  初心者  - 05/4/15(金) 16:45 -

引用なし
パスワード
   おさるさん、Keinさん、小僧さん、ありがとうございました。
所で小僧さんにお聞きしたいのですが、名前が重複してしまった時にファイル名の最後に
番号を付けれますでしょうか?

【24218】Re:ファイル名を日付にする
発言  ウッシ  - 05/4/15(金) 20:25 -

引用なし
パスワード
   ▼初心者 さん:
>おさるさん、Keinさん、小僧さん、ありがとうございました。
>所で小僧さんにお聞きしたいのですが、名前が重複してしまった時にファイル名の最後に
>番号を付けれますでしょうか?

レスの中に有りますけど、秒まで名前に含めれば重複するという事はあまり考えなくて
いいのでは?

【24224】Re:ファイル名を日付にする
お礼  初心者  - 05/4/15(金) 23:41 -

引用なし
パスワード
   ウッシさんすいません。
秒でも出来たのですが、一応参考までにというか違うパターンでも出来ないかなと思いまして。
変な質問をしてしまってすいませんでしたm(__)m

【24225】Re:ファイル名を日付にする
回答  小僧  - 05/4/15(金) 23:44 -

引用なし
パスワード
   ▼初心者 さん  ウッシさん
こんばんは。

Sub DataBkup()

Dim FSO As Object
Dim MyFile As Variant
Dim MyPath As Variant
Dim vFile As Variant
Dim Cnt As Long
Dim FileName As String

  Set FSO = CreateObject("Scripting.FileSystemObject")
  MyFile = "C:\test.txt"   'データファイルをフルパスで指定
  MyPath = "C:\backup\"     'コピー先のフォルダを指定

  FSO.CopyFile MyFile, MyPath

  Set vFile = FSO.GetFile _
  (MyPath & Right(MyFile, Len(MyFile) - InStrRev(MyFile, "\")))

  FileName = Format(Now(), "mmdd_hh_mm") & Right(MyFile, 4)

  Cnt = 1
  Do While FSO.FileExists(MyPath & FileName)
    FileName = Format(Now(), "mmdd_hh_mm") & "_" & _
          Cnt & Right(MyFile, 4)
    Cnt = Cnt + 1
  Loop
  
  vFile.Name = FileName
  Set vFile = Nothing
  Set FSO = Nothing
End Sub

あまり綺麗なコードではありませんが、
とりあえず動くと思われます。

【24250】Re:ファイル名を日付にする
質問  YN61  - 05/4/17(日) 13:45 -

引用なし
パスワード
   ▼小僧 さん:
突然ですみません、貴殿のコードで小生もファイル名をつけて見ようと
試しましたが、バグが出ます。何が原因かお分かりでしたら
教えてください。※マークの部分です。

>Sub DataBkup()
>
>Dim FSO As Object
>Dim MyFile As Variant
>Dim MyPath As Variant
>Dim vFile As Variant
>Dim Cnt As Long
>Dim FileName As String
>
>  Set FSO = CreateObject("Scripting.FileSystemObject")
>  MyFile = "C:\test.txt"   'データファイルをフルパスで指定
>  MyPath = "C:\backup\"     'コピー先のフォルダを指定
>
>  FSO.CopyFile MyFile, MyPath
>
>  Set vFile = FSO.GetFile _
>  (MyPath & Right(MyFile, Len(MyFile) - InStrRev(MyFile, "\")))
※→→ この部分でバグが出ますが、何が原因か分かりでしたら教えてください。

>
>  FileName = Format(Now(), "mmdd_hh_mm") & Right(MyFile, 4)
>
>  Cnt = 1
>  Do While FSO.FileExists(MyPath & FileName)
>    FileName = Format(Now(), "mmdd_hh_mm") & "_" & _
>          Cnt & Right(MyFile, 4)
>    Cnt = Cnt + 1
>  Loop
>  
>  vFile.Name = FileName
>  Set vFile = Nothing
>  Set FSO = Nothing
>End Sub

【24253】Re:ファイル名を日付にする
回答  Hirofumi  - 05/4/17(日) 19:07 -

引用なし
パスワード
    ▼YN61 さん:
>突然ですみません、貴殿のコードで小生もファイル名をつけて見ようと
>試しましたが、バグが出ます。何が原因かお分かりでしたら
>教えてください。※マークの部分です。

小僧さんでは有りませんが、Win98、Excel2000で試しましたけど
一応エラーは、起こしませんでした
ただ、InStrRevを使っているので、Excel97を含めて以前のバージョンでは
使え無いと思います

また、少し気に成る所が有りますので
私だったら、以下の様にすると思います

Public Sub Sample()

  DataBkup2 "C:\test.txt", "C:\backup\"
  
End Sub

Public Sub DataBkup2(ByVal strSource As String, ByVal strToPath As String)

  Const strForm As String = "mmdd_hh_mm"
  
  Dim i As Long
  Dim objFso As Object
  Dim strFileName As String
  Dim strExte As String
  Dim dblDate As Double
  
  If Right(strToPath, 1) <> "\" Then
    strToPath = strToPath & "\"
  End If
  
  dblDate = Now
  
  Set objFso = CreateObject("Scripting.FileSystemObject")
  
  With objFso
    strExte = "." & .GetExtensionName(strSource)
    strFileName = strToPath & Format(dblDate, strForm) & strExte
    Do While .FileExists(strFileName)
      i = i + 1
      strFileName = strToPath & Format(dblDate, strForm) _
                          & "_" & i & strExte
    Loop
    .CopyFile strSource, strFileName
  End With
  
  Set objFso = Nothing
  
End Sub

気に成る所
1、Loopの中でNow()を使って要る所
2、Copyしてから名前を変えるのでは無く、違う名前でCopyし方が善い様な気がします

【24258】Re:ファイル名を日付にする
質問  YN61  - 05/4/17(日) 21:57 -

引用なし
パスワード
   ▼Hirofumi さん:

ありがとうございます。
このマクロを使いたいと思い興味を持って見させて
頂いていました。が…
何か問題があり、同じ個所でバグが出てしまいます。
.CopyFile strSource, strFileName←コードの下から4行目のこの部分です。
当方に問題があることは明白ですが「実行エラー53」
「ファイルが見つかりません」となります。
アドバイスいただければ幸いです。お手数を
おかけします。

>Public Sub Sample()
>
>  DataBkup2 "C:\test.txt", "C:\backup\"
>  
>End Sub
>
>Public Sub DataBkup2(ByVal strSource As String, ByVal strToPath As String)
>
>  Const strForm As String = "mmdd_hh_mm"
>  
>  Dim i As Long
>  Dim objFso As Object
>  Dim strFileName As String
>  Dim strExte As String
>  Dim dblDate As Double
>  
>  If Right(strToPath, 1) <> "\" Then
>    strToPath = strToPath & "\"
>  End If
>  
>  dblDate = Now
>  
>  Set objFso = CreateObject("Scripting.FileSystemObject")
>  
>  With objFso
>    strExte = "." & .GetExtensionName(strSource)
>    strFileName = strToPath & Format(dblDate, strForm) & strExte
>    Do While .FileExists(strFileName)
>      i = i + 1
>      strFileName = strToPath & Format(dblDate, strForm) _
>                          & "_" & i & strExte
>    Loop
>    .CopyFile strSource, strFileName
>  End With
>  
>  Set objFso = Nothing
>  
>End Sub
>

【24266】Re:ファイル名を日付にする
回答  小僧  - 05/4/18(月) 9:18 -

引用なし
パスワード
   ▼Hirofumi さん  YN61 さん:
おはようございます。

>1、Loopの中でNow()を使って要る所
>2、Copyしてから名前を変えるのでは無く、違う名前でCopyし方が善い様な気がし>ます

以上の2点をふまえて…

Sub DataBkup()
Dim FSO As Object
Dim MyFile As String
Dim MyPath As Variant
Dim MyExt As String
Dim Cnt As Long
Dim FileName As String

  Set FSO = CreateObject("Scripting.FileSystemObject")
  MyFile = "C:\test.txt"   'データファイルをフルパスで指定
  MyPath = "C:\backup\"     'コピー先のフォルダを指定

  MyExt = FSO.GetExtensionName(MyFile)
  FileName = Format(Now(), "mmdd_hh_mm") & "." & MyExt
  
  Cnt = 1
  Do While FSO.FileExists(MyPath & FileName)
    FileName = Left(FileName, 10) & "_" & Cnt & "." & MyExt
    Cnt = Cnt + 1
  Loop
 
  FSO.CopyFile MyFile, MyPath & FileName
  Set FSO = Nothing
End Sub

>「実行エラー53」
>「ファイルが見つかりません」となります。

元になるファイル「C:\test.txt」とコピー先のフォルダ「C:\backup\」
が存在していない事が考えられますが…。
外していたら申し訳ないです。

【24359】Re:ファイル名を日付にする
お礼  初心者  - 05/4/20(水) 15:27 -

引用なし
パスワード
   みなさんありがとうございました。
色々参考になりました。
今後ともよろしくお願いします

9998 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free