返回列表 上一主題 發帖

[發問] 存檔時,自動加入存檔時的日期

Sub 改名()
Name "c:\aaa.xlsx" As "c:\aaa" & "_" & Format(Date, "yyyymmdd") & ".xlsx"
End Sub

TOP

本帖最後由 downling 於 2011-11-11 08:39 編輯

回復 11# oobird

謝謝您的回復
不過oobird 版大您這程式是只有把日期加上去而已喔

小弟拿到的檔名並沒有固定,所以還有檔案名稱跟路徑的要擷取,這部份上面小弟已經有寫出來了
加上小弟有時拿到的並非原始檔而是修改過已經加上日期的檔案
所以想問一下是不是有判斷副檔名前有沒有日期的寫法
如果沒有就加上今天日期
若有則修改成今天日期

TOP

本帖最後由 luhpro 於 2011-11-12 09:12 編輯

回復 12# downling
這最好能有你實際產生出來的檔案名稱作基準才好寫程式,
在此假設你的檔案名稱不管有沒有日期檔名中都不會出現 201 這個數字(9 年後請再自己改成 202),
那麼就可以用 201 作為判斷是否檔名已有日期的依據,
有 201 就用今天日期取代 2 開始的 8 個數字,
沒有就加上日期.

當然, 如果檔名中有可能出現 201 ,
那麼寫法又會有所不同了,
這就是需要有你實際產生出來的檔案名稱作基準的原因.

TOP

回復 8# downling


   剛剛改了一下, 是這樣嗎?
  1. Sub TD()

  2.    Myname = Application.ActiveWorkbook.FullName
  3.    
  4.    Mypos = InStr(1, Myname, "_", 1)
  5.      
  6.    Application.DisplayAlerts = False
  7.      
  8.    If Mypos = 0 Then
  9.   
  10.        ActiveWorkbook.SaveCopyAs Replace(Myname, ".xls", "_" & Format(Date, "yyyymmdd") & ".xls")
  11.    
  12.    Else
  13.    
  14.      Newname = Mid(Myname, 1, Mypos - 1)
  15.      
  16.      ActiveWorkbook.SaveCopyAs Newname & "_" & Format(Date, "yyyymmdd") & ".xls"
  17.      
  18.    End If
  19.      
  20.    Application.DisplayAlerts = True
  21.    
  22. End Sub
複製代碼

TOP

回復 13# luhpro

基本上檔名除了日期外是不會有其他的一連串數字
請問一下要用那種含數做201數字的判斷?

回復 14# mike.lee

請問mike.lee
InStr能從後面往前找嗎?
因為有些人喜觀用"_"做為空格

TOP

本帖最後由 GBKEE 於 2011-11-14 11:06 編輯

回復 15# downling
  1. Sub Ex()  'StrReverse函數 -> 傳回指定字串的字元順序是反向的。
  2.     Dim A, X
  3.     A = "A_120_78_9"
  4.     X = A Like "*120*"    '找到傳回 True 反之傳回 False
  5.     MsgBox X   
  6.    X = InStrRev(A, "_")    '由左右向左搜尋的字串運算式
  7.     MsgBox X
  8.    A = StrReverse(A)
  9.     X = InStr( A, "_")  '由左向右搜尋的字串運算式
  10.     MsgBox X
  11. End Sub
複製代碼
  1. Sub Ex()     ''InStr  ,    InStrRev  用法不同
  2.     Dim A, X, C
  3.     A = "A120_78_9"
  4.      'InStr([start, ]string1, string2[, compare])
  5.     '      start= C    string1= A     'string2="_"
  6.     C = 1                   '設定從第幾個字母開始尋找
  7.     'X = InStr(A, "_")      '沒指定C 預設為1
  8.     X = InStr(C, A, "_")  '由左向右搜尋的字串運算式
  9.     MsgBox X
  10.     'InstrRev(stringcheck, stringmatch[, start[, compare]])
  11.     '    stringcheck= A   'stringmatch="_"  Start= C
  12.     C = Len(A)                 '設定從第幾個字母開始尋找
  13.     'X = InStrRev(A, "_")      '沒指定C 預設為字串的長度 Len(A)  
  14.     X = InStrRev(A, "_", C)  '由右向左搜尋的字串運算式
  15.     MsgBox X
  16. End Sub
複製代碼

TOP

回復  luhpro

基本上檔名除了日期外是不會有其他的一連串數字
請問一下要用那種含數做201數字的判斷?
...
downling 發表於 2011-11-14 09:26

把檔名放進字串變數裡,
然後參照上面的方式使用 Instr 找檔名(不含目錄)字串內有沒有 "201" 就可以了.

TOP

回復 15# downling


   感謝GBKEE 大大詳細的說明,

如果"_"非檔名內唯一字元,上面程式就無法使用,就必須如luhpro 大大所說的,
利用"201"字串,判斷是否存在?再做檔名的取捨.

TOP

謝謝各位大大的討論,是初學者的福音。

TOP

        靜思自在 : 人生最大的成就是從失敗中站起來。
返回列表 上一主題