cuongdv
Thành viên mới

- Tham gia
- 26/11/08
- Bài viết
- 38
- Được thích
- 6

Bạn nào có thể giúp mình với, cảm ơn nhiều!
Bạn sử dụng code này nhé:Giả sử mình đang có 1 file excel: N_1.xls, bây giờ mình muốn khi khi chạy 1 macro ở file này (N_1) thì sẽ tạo ra 1 file khác cùng folder với tên là N_2.xls (giống như save As). Từ N_1.xls, N_2.xls sẽ tạo ra được N_3.xls,...... (khi ở trong folder đó nếu N_xx là lớn nhất thì khi ở bất kỳ 1 file nào cũng sẽ tạo ra đc 1 file N_xx+1, xx+1 là 1 số hữu hạn, vd là 5)
Bạn nào có thể giúp mình với, cảm ơn nhiều!
Sub Save_Copy_As()
Dim FileS As FileSearch, Max As Integer, i As Byte, So As Integer, Temp As String
Set FileS = Application.FileSearch
With FileS
.NewSearch
.Filename = "*.xls"
.LookIn = ThisWorkbook.Path
.SearchSubFolders = False
.Execute
End With
With ThisWorkbook
Max = Val(Right(.Name, Len(.Name) - InStr(.Name, "_")))
Temp = "_" & Max
End With
For i = 1 To FileS.FoundFiles.Count
So = Val(Right(FileS.FoundFiles(i), Len(FileS.FoundFiles(i)) - InStr(FileS.FoundFiles(i), "_")))
If So > Max Then Max = So
Next i
ThisWorkbook.SaveCopyAs Replace(ThisWorkbook.FullName, Temp, "_" & Max + 1)
End Sub
Bạn sử dụng code này nhé:
Với code này, tên tập tin phải được đặt dạng A_n. Trong đó:PHP:Sub Save_Copy_As() Dim FileS As FileSearch, Max As Integer, i As Byte, So As Integer, Temp As String Set FileS = Application.FileSearch With FileS .NewSearch .Filename = "*.xls" .LookIn = ThisWorkbook.Path .SearchSubFolders = False .Execute End With With ThisWorkbook Max = Val(Right(.Name, Len(.Name) - InStr(.Name, "_"))) Temp = "_" & Max End With For i = 1 To FileS.FoundFiles.Count So = Val(Right(FileS.FoundFiles(i), Len(FileS.FoundFiles(i)) - InStr(FileS.FoundFiles(i), "_"))) If So > Max Then Max = So Next i ThisWorkbook.SaveCopyAs Replace(ThisWorkbook.FullName, Temp, "_" & Max + 1) End Sub
- A là một nhóm ký tự bất kỳ (có thể dùng để đặt tên file) nhưng không được chứa ký tự "_".
- n là một số nguyên bất kỳ trong phạm vi kiểu Integer (-32768 đến 32766) (sở dĩ là 32766 mà không phải là 32767 vì 32767+1=32768 => tràn số)