Board logo

標題: 求助---如何Save 使其檔名尾號+1而不重複 [打印本頁]

作者: yangjie    時間: 2011-1-18 23:49     標題: 求助---如何Save 使其檔名尾號+1而不重複

本帖最後由 yangjie 於 2011-1-19 00:57 編輯

就教於各位板主大大:
Sub output()
    Application.DisplayAlerts = False
    path1 = ActiveWorkbook.Path
    n=1   
Sheets("學生資料").Activate
    Sheets("學生資料").Copy
    ActiveWorkbook.SaveAs FileName:= _
        path1&"\(" & Date$ & ")資料備份" & n &  ".xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    ActiveWindow.Close
End Sub
    應如何修改 使其自動判讀n=? 才能不重複檔名

謝謝 感恩
作者: Hsieh    時間: 2011-1-19 13:23

本帖最後由 Hsieh 於 2011-1-19 14:45 編輯

回復 1# yangjie
取得該目錄的檔案數量即可
  1. Sub nn()
  2. Sheets(1).Copy
  3. d = Date$
  4. fd = ThisWorkbook.Path & "\"
  5. f = Dir(fd & d & "*.xls")
  6. Do Until f = ""
  7. n = n + 1
  8. f = Dir
  9. Loop
  10. fs = IIf(IsEmpty(n), d & ".xls", d & "_" & n & ".xls")
  11. ActiveWorkbook.SaveAs fd & fs
  12. End Sub
複製代碼

作者: yangjie    時間: 2011-1-21 13:19

回復 2# Hsieh


    謝謝版主,問題解決了。
想再請教
     f = Dir(fd & d & "*.xls")
        Do Until f = ""
            n = n + 1
            f = Dir
        Loop
為何? f = Dir 的邏輯是?????? 想不懂??
請賜教
作者: Hsieh    時間: 2011-1-21 14:46

回復 3# yangjie

VBA說明:
    第一次呼叫 Dir 函數時,必須指定 pathname,若要取得其它符合 pathname 的檔案名稱,請重新呼叫 Dir,且不要使用引數
所以當呼叫過DIR函數,VBA即會以同項目為搜尋目標條件
如果已沒有合乎條件的檔案,則 Dir 會傳回一個空字串 (""),一旦傳回值為空字串時,如要再次呼叫 Dir ,也必須要再指定 pathname ,否則會產生錯誤。
所以變數f就是來判斷是否還有符合條件的檔名
作者: yangjie    時間: 2011-1-22 00:30

回復 4# Hsieh


    完全了解   感謝 Hseih 超級版主




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)