返回列表 上一主題 發帖

[發問] 如何用按鈕複製檔案?(已解決)

回復 1# iceandy6150
複製檔案最重要是檔名問題
如果以第一例中文名稱+數值作為檔名
可計算同名稱檔案數量後加上號碼做為新檔案名稱
  1. Private Sub CommandButton1_Click()
  2. With ThisWorkbook
  3. f = Replace(Replace(.Name, StrReverse(Val(StrReverse(Replace(.Name, ".xls", "")))), ""), ".xls", "")
  4. fs = Dir(f & "*.xls")
  5. Do Until fs = ""
  6. fs = Dir
  7. i = i + 1
  8. Loop
  9. f = .Path & "\" & f & i + 1 & ".xls"
  10. .SaveCopyAs f
  11. End With
  12. End Sub
複製代碼
若執行巨集的檔名與另存的檔案名稱沒有任何規則,可能就要指定檔名再去計算同名不同編號的檔案數量
在另存新檔
學海無涯_不恥下問

TOP

回復 3# iceandy6150
試試看
  1. Private Sub CommandButton1_Click()
  2. On Error Resume Next
  3. ph = ThisWorkbook.Path & "\"
  4. f = ThisWorkbook.Name
  5. i = 1
  6. Do Until i > Len(f) Or Not IsEmpty(n)
  7. n = Empty
  8.    n = CInt(Mid(f, i, 1))
  9.    If IsEmpty(n) Then k = k & Mid(f, i, 1)
  10.    Err.Clear
  11.    i = i + 1
  12. Loop
  13. fs = Dir(ph & k & "*.xls")
  14. Do Until fs = "" '計算同名檔案數量
  15. fs = Dir
  16. x = x + 1
  17. Loop
  18. fs = ph & k & x + 1 & "日.xls"
  19. ThisWorkbook.SaveCopyAs fs
  20. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 5# iceandy6150
  1. Private Sub CommandButton1_Click()
  2. On Error Resume Next
  3. ph = ThisWorkbook.Path & "\"
  4. f = ThisWorkbook.Name
  5. i = 1
  6. Do Until i > Len(f) Or Not IsEmpty(n)
  7. n = Empty
  8.    n = CInt(Mid(f, i, 1))
  9.    If IsEmpty(n) Then k = k & Mid(f, i, 1)
  10.    Err.Clear
  11.    i = i + 1
  12. Loop
  13. p = Day(DateAdd("M", 1, Format(Date, "yyyy/m/1")) - 1)
  14. For j = 2 To p
  15. fs = ph & k & j & "日.xls"
  16. If Dir(fs) = "" Then ThisWorkbook.SaveCopyAs fs
  17. Next
  18. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 7# iceandy6150
Day(DateAdd("M", 1, Format(Date, "yyyy/m/1")) - 1)
這可取得這個月的日數
DateAdd("M", 1, Format(Date, "yyyy/m/1")) 得到下個月第一天日期
所以減1就是本月最後一天
學海無涯_不恥下問

TOP

        靜思自在 : 我們最大的敵人不是別人.可能是自己。
返回列表 上一主題