Code lưu một file ra nhiều file

Liên hệ QC

huyen891977

Thành viên chính thức
Tham gia
15/11/08
Bài viết
87
Được thích
16
Nghề nghiệp
nojob
Chào các bạn trên GPE. Các bạn cho mình hỏi có đoạn code nào giúp ta khi nhấp lệnh lưu file đang sử dụng thì file đó sẽ tự động lưu vào các thư mục giống nhau nằm ở các ổ đĩa khác nhau trong cùng một máy không? (trên máy mình gắn 2 ổ cứng, mình muốn đề phòng ổ đĩa die bất ngờ làm mất dữ liệu như lần trước).
CẢM ƠN NHIỀU!
 
Vậy bạn muốn lưu như thế nào đây?
Muốn lưu ra 2 địa chỉ khác nhau thì viết như sau:
Mã:
[COLOR=#000000][COLOR=#0000bb][FONT=Courier New]Sub Luu[/FONT][/COLOR][FONT=Courier New][COLOR=#007700]()[/COLOR][/FONT]
[FONT=Courier New][COLOR=#0000bb]Dim dir1 [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000bb]String[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]dir2 [/COLOR][COLOR=#007700]As [/COLOR][/FONT][FONT=Courier New][COLOR=#0000bb]String[/COLOR][/FONT]
[FONT=Courier New][COLOR=#0000bb]dir1 [/COLOR][COLOR=#007700]= [/COLOR][/FONT][FONT=Courier New][COLOR=#dd0000]"C:\Documents and Settings\Kim Ngan\Desktop\"[/COLOR][/FONT]
[FONT=Courier New][COLOR=#dd0000]dir2 = "[/COLOR][COLOR=#0000bb]D[/COLOR][COLOR=#007700]:\[/COLOR][COLOR=#0000bb]Backup\[/COLOR][/FONT][COLOR=#dd0000][FONT=Courier New]"[/FONT][/COLOR]
[FONT=Courier New][COLOR=#dd0000]MyFileName = Right(ActiveWorkbook.FullName, Len(ActiveWorkbook.FullName) - InStrRev(ActiveWorkbook.FullName, "\", , vbTextCompare))[/COLOR][/FONT]
[FONT=Courier New][COLOR=#dd0000]ActiveWorkbook.SaveAs Filename:=dir1 & MyFileName[/COLOR][/FONT]
[FONT=Courier New][COLOR=#dd0000]ActiveWorkbook.SaveAs Filename:=dir2 & MyFileName[/COLOR][/FONT]
[FONT=Courier New][COLOR=#dd0000]End Sub  [/COLOR][/FONT]
[/COLOR]
Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy bạn muốn lưu như thế nào đây?
Muốn lưu ra 2 địa chỉ khác nhau thì viết như sau:

File gốc nằm ở D:\GIANG\DX.XLS
Mình muốn lưu thêm vào các PATH sau :
E:\GIANG\DX.XLS
F:\GIANG\DX.XLS
G:\GIANG\DX.XLS

Nghĩa là khi nhấp lệnh lưu thì file đó sẽ được lưu vào 4 thư mục cùng tên nằm ở 4 ổ đĩa
THÂN!
 
Upvote 0
Vậy thì viết như vầy nha!
Mã:
[COLOR=#000000][COLOR=#0000bb][FONT=Courier New]Sub Luu[/FONT][/COLOR][FONT=Courier New][COLOR=#007700]()[/COLOR][/FONT]
[FONT=Courier New][COLOR=#0000bb]Dim dir [/COLOR][COLOR=#007700]As [/COLOR][/FONT][FONT=Courier New][COLOR=#0000bb]String[/COLOR][/FONT]
[FONT=Courier New][COLOR=#0000bb]dir [/COLOR][COLOR=#007700]= [/COLOR][/FONT][FONT=Courier New][COLOR=#dd0000]"DEFG"[/COLOR][/FONT]
[FONT=Courier New][COLOR=#0000bb]MyFileName [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]Right[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]ActiveWorkbook[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]FullName[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]Len[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]ActiveWorkbook[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]FullName[/COLOR][COLOR=#007700]) - [/COLOR][COLOR=#0000bb]InStrRev[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]ActiveWorkbook[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]FullName[/COLOR][COLOR=#007700], [/COLOR][/FONT][FONT=Courier New][COLOR=#dd0000]"\", , vbTextCompare))[/COLOR][/FONT]
[FONT=Courier New][COLOR=#dd0000]For i = 1 to 4[/COLOR][/FONT]
[FONT=Courier New][COLOR=#dd0000]ActiveWorkbook.SaveAs Filename:=Mid(dir, i, 1) & "[/COLOR][COLOR=#007700]:\[/COLOR][COLOR=#0000bb]GIANG\[/COLOR][/FONT][COLOR=#dd0000][FONT=Courier New]" & MyFileName[/FONT][/COLOR]
[FONT=Courier New][COLOR=#dd0000]Next i[/COLOR][/FONT]
[FONT=Courier New][COLOR=#dd0000]End Sub [/COLOR][/FONT][/COLOR]
Thân.
 
Upvote 0
Chào các bạn trên GPE. Các bạn cho mình hỏi có đoạn code nào giúp ta khi nhấp lệnh lưu file đang sử dụng thì file đó sẽ tự động lưu vào các thư mục giống nhau nằm ở các ổ đĩa khác nhau trong cùng một máy không? (trên máy mình gắn 2 ổ cứng, mình muốn đề phòng ổ đĩa die bất ngờ làm mất dữ liệu như lần trước).
CẢM ƠN NHIỀU!
Cơ bản nó nằm ở bài này:
http://www.giaiphapexcel.com/forum/showthread.php?t=18352
Bạn muốn lưu thành nhiều file thì gán cho nó 1 vòng lập, ví dụ:
PHP:
Sub Backup()
 Dim i As Long
   For i = 1 To 3
    ThisWorkbook.SaveCopyAs Choose(i, "E", "F", "G") & ":\GIANG\DX.XLS"
   Next i
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Cơ bản nó nằm ở bài này:
http://www.giaiphapexcel.com/forum/showthread.php?t=18352
Bạn muốn lưu thành nhiều file thì gán cho nó 1 vòng lập, ví dụ:
PHP:
Sub Backup()
 Dim i As Long
   For i = 1 To 3
    ThisWorkbook.SaveCopyAs Choose(i, "E", "F", "G") & ":\GIANG\DX.XLS"
   Next i
End Sub
Theo riêng em thì nên dùng FileCopy SourceFile, DestinationFile vì em cho rằng FileCopy sẽ nhanh hơn SaveAs. Nhất là File có dung lượng lớn và nhiều công thức (Mỗi lần Save, Excel thường Calculate lại) thì sự khác biệt này rất rõ rệt.

Thân
TDN

 
Upvote 0

Theo riêng em thì nên dùng FileCopy SourceFile, DestinationFile vì em cho rằng FileCopy sẽ nhanh hơn SaveAs. Nhất là File có dung lượng lớn và nhiều công thức (Mỗi lần Save, Excel thường Calculate lại) thì sự khác biệt này rất rõ rệt.

Thân
TDN

Nghe có lý đây!
Và lưu ý rằng code chỉ thực hiện được khi SourceFile đang đóng ---> Tức file chứa code là 1 file hoàn toàn khác ---> Điều này lại có thêm 1 cái lợi hơn SaveAs ở chổ không phải "mang" code theo khi lưu file
 
Upvote 0
Copy File rất tốt, chỉ cần chú ý một số điều như bác ndu nói:


FileCopy Statement

Copies a file.
Syntax
FileCopy source, destination
The FileCopy statement syntax has these named arguments:


Part|Description
source|Required. String expression that specifies the name of the file to be copied. The source may include directory or folder, and drive.
destination|Required. String expression that specifies the target file name. The destination may include directory or folder, and drive.
If you try to use the FileCopy statement on a currently open file, an error occurs
Thân!
 
Upvote 0

Theo riêng em thì nên dùng FileCopy SourceFile, DestinationFile vì em cho rằng FileCopy sẽ nhanh hơn SaveAs. Nhất là File có dung lượng lớn và nhiều công thức (Mỗi lần Save, Excel thường Calculate lại) thì sự khác biệt này rất rõ rệt.

Thân
TDN

Cái này mình công nhận là chính xác và đã kiểm chứng, thời gian Save as rất lâu so với copy
 
Upvote 0
Nghe có lý đây!
Và lưu ý rằng code chỉ thực hiện được khi SourceFile đang đóng ---> Tức file chứa code là 1 file hoàn toàn khác ---> Điều này lại có thêm 1 cái lợi hơn SaveAs ở chổ không phải "mang" code theo khi lưu file
Thực ra codes nằm trong SourceFile (
SourceFile có thể đang mở) em nghĩ cũng có thể thực hiện được. Trước khi Copy, ta chuyển File về trạng thái ReadOnly (giống như File tự xoá)...; Lý thuyết, em nghĩ là vậy, hi hi..

TDN
 
Upvote 0

Thực ra codes nằm trong SourceFile (
SourceFile có thể đang mở) em nghĩ cũng có thể thực hiện được. Trước khi Copy, ta chuyển File về trạng thái ReadOnly (giống như File tự xoá)...; Lý thuyết, em nghĩ là vậy, hi hi..

TDN
Vậy là phải nhờ thầy làm 1 code minh họa rồi...
 
Upvote 0
Vậy là phải nhờ thầy làm 1 code minh họa rồi...
Hi hi, em xin lỗi vì lười nên làm biếng Test. Anh xem ví dụ bên dưới nha.
Em chỉ test Copy có 1 File thôi, nếu muốn Copy nhiều File thì thêm For vào... bảo đảm rất nhanh.

Thân
TDN
 

File đính kèm

Upvote 0

Hi hi, em xin lỗi vì lười nên làm biếng Test. Anh xem ví dụ bên dưới nha.
Em chỉ test Copy có 1 File thôi, nếu muốn Copy nhiều File thì thêm For vào... bảo đảm rất nhanh.

Thân
TDN
Đã test thử thành công! Hay thật!
Vậy là "ăn tiền" nằm ở chổ:
ThisWorkbook.ChangeFileAccess xlReadOnly
Cảm ơn thầy
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom