Save As file Excel bằng VBA

Liên hệ QC

doanhhoang79

Thành viên hoạt động
Tham gia
31/3/08
Bài viết
142
Được thích
18
Kg các anh chị,

Hiện nay tôi đang quản lý một file Excel. Tôi muốn viết 1 đoạn code để có thể sao lưu file này vào cối mỗi năm (31/12). Tôi đã thử 1 file nhưng khi Save As thì nó đóng luôn cả file gốc. Tôi muốn sau khi Save As thì file được đổi tên lưu và đóng lại nhưng file gốc vẫn mở.
Mong các anh, chị trên diễn đàn thêm code giúp.

Với cách tương tự các ạnh chị, giúp tôi xử lý trên From thì càng tốt.

Mong sự giúp đỡ,
 

File đính kèm

  • File VD.xls
    25 KB · Đọc: 211
Chỉnh sửa lần cuối bởi điều hành viên:
Kg các anh chị,

Hiện nay tôi đang quản lý một file Excel. Tôi muốn viết 1 đoạn code để có thể sao lưu file này vào cối mỗi năm (31/12). Tôi đã thử 1 file nhưng khi Save As thì nó đóng luôn cả file gốc. Tôi muốn sau khi Save As thì file được đổi tên lưu và đóng lại nhưng file gốc vẫn mở.
Mong các anh, chị trên diễn đàn thêm code giúp.

Cảm ơn nhiều,

mình đã sửa lại code theo ý của bạn

PHP:
Sub Luu()
Dim SrceFile
Dim DestFile
ActiveWorkbook.Save

SrceFile = "d:\File VD.xls"
DestFile = "d:\Data" & Format(Date, "yyyy") & ".xls"
FileCopy SrceFile, DestFile

End Sub
 
mình đã sửa lại code theo ý của bạn

PHP:
Sub Luu()
Dim SrceFile
Dim DestFile
ActiveWorkbook.Save

SrceFile = "d:\File VD.xls"
DestFile = "d:\Data" & Format(Date, "yyyy") & ".xls"
FileCopy SrceFile, DestFile

End Sub

Cảm ơn bạn dunglev nhưng code của bạn vẫn báo lỗi và không thực hiện được
 
Kg các anh chị,

Hiện nay tôi đang quản lý một file Excel. Tôi muốn viết 1 đoạn code để có thể sao lưu file này vào cối mỗi năm (31/12). Tôi đã thử 1 file nhưng khi Save As thì nó đóng luôn cả file gốc. Tôi muốn sau khi Save As thì file được đổi tên lưu và đóng lại nhưng file gốc vẫn mở.
Mong các anh, chị trên diễn đàn thêm code giúp.

Cảm ơn nhiều,

Phải nói là có lẽ lạm dụng quá đi! Nếu mỗi năm save as một lần, cần thiết gì viết VBA.
 
Cảm ơn bạn dunglev nhưng code của bạn vẫn báo lỗi và không thực hiện được
Bạn sửa code thành như vầy:
PHP:
Sub Luu()
ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "\Data" & Format(Date, "yyyy") & ".xls"
End Sub
Nhưng vẫn đồng ý với Solomon là QUÁ LẠM DỤNG.. đến mức không cần thiết
 
Bạn sửa code thành như vầy:
PHP:
Sub Luu()
ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "\Data" & Format(Date, "yyyy") & ".xls"
End Sub
Nhưng vẫn đồng ý với Solomon là QUÁ LẠM DỤNG.. đến mức không cần thiết

Cảm ơn các anh chị,

Nếu là một file thông thường thì dùng từ "quá lạm dụng" là đúng. Nhưng file của tôi là cả một hệ thống quản lý bằng Form, vì vậy không nên dùng từ này. Mỗi người đều có mục đích riêng của mình đúng không? Mong các anh, chị thông cảm.
 
Cảm ơn các anh chị,

Nếu là một file thông thường thì dùng từ "quá lạm dụng" là đúng. Nhưng file của tôi là cả một hệ thống quản lý bằng Form, vì vậy không nên dùng từ này. Mỗi người đều có mục đích riêng của mình đúng không? Mong các anh, chị thông cảm.

Nếu như vậy bạn phải yêu cầu thêm là trong file lưu không chứa các code, các nút command,... Nếu không file lưu y chang như file gốc thì không tiện rùi.|||||


Thân.
 
mình đã sửa lại code theo ý của bạn

PHP:
Sub Luu()
Dim SrceFile
Dim DestFile
ActiveWorkbook.Save

SrceFile = "d:\File VD.xls"
DestFile = "d:\Data" & Format(Date, "yyyy") & ".xls"
FileCopy SrceFile, DestFile

End Sub

Hình như bạn nhầm lẫn?

PHP:
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. 

Remarks

If you try to use the FileCopy statement on a currently open file, an error occurs.

Example
This example uses the FileCopy statement to copy one file to another. For purposes of this example, assume that 

SRCFILE 

is a file containing some data.

Dim SourceFile, DestinationFile
SourceFile = "SRCFILE"    ' Define source file name.
DestinationFile = "DESTFILE"    ' Define target file name.
FileCopy SourceFile, DestinationFile    ' Copy source to target.


Bạn dùng tạm cái này, định dạng file lưu là ổn

PHP:
Sub saveas()
Dim filename As String
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
    filename = ThisWorkbook.Path & "\" & ThisWorkbook.Name
    Set xlApp = CreateObject("Excel.Application")
    'xlApp.Visible = False 
    'xlApp.DisplayAlerts = False
    Set xlBook = xlApp.Workbooks.Add(filename)
    ThisWorkbook.saveas "C:\TEST.XLS"
    xlApp.Quit
    Set xlApp = Nothing
End Sub
 
Nếu như vậy bạn phải yêu cầu thêm là trong file lưu không chứa các code, các nút command,... Nếu không file lưu y chang như file gốc thì không tiện rùi.|||||


Thân.


Thêm code như thế nào để file lưu không chứa các code, các nút command,... các bạn chỉ giúp mình nhé!
 
Sao lưu file

Bạn sửa code thành như vầy:
PHP:
Sub Luu()
ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "\Data" & Format(Date, "yyyy") & ".xls"
End Sub
Nhưng vẫn đồng ý với Solomon là QUÁ LẠM DỤNG.. đến mức không cần thiết

Bạn ơi, cách của bạn hay quá. Nhưng làm sao để sao lưu file mà không chứa các code, các nút command,...
Cảm ơn bạn
 
Trùi ui! Khỏi code kiết chi cho mệt, từ file excel, bạn ấn Atl+F, sau đó ấn tiếp chữ A, chọn đường dẫn lưu file là xong! %#^#$
Cái này cũng là Save As mà Kiệt! Và file lưu cũng sẽ chứa code lẩn các Command Button
Tôi nhớ đã viết 1 bài tương tự, đại khái copy Value sang 1 file mới rồi save file này là xong!
Làm bằng tay thử trước, nếu làm được thì cứ record macro quá trình này xem
 
Cái này cũng là Save As mà Kiệt! Và file lưu cũng sẽ chứa code lẩn các Command Button
Tôi nhớ đã viết 1 bài tương tự, đại khái copy Value sang 1 file mới rồi save file này là xong!
Làm bằng tay thử trước, nếu làm được thì cứ record macro quá trình này xem
Hihi! Em lại tưởng thao tác lưu file lại mà không cần code với mấy cái nút command kia chứ!%#^#$

Vậy thì thử cách này xem sao: Vẫn Alt+F, sau đó ấn chữ A. Lưu file dưới dạng *.CSV
Thoát ra rồi đổi phần mở rộng của file vừa lưu thành *.xls là xong. Khỏi cần code.
 
Hihi! Em lại tưởng thao tác lưu file lại mà không cần code với mấy cái nút command kia chứ!%#^#$

Vậy thì thử cách này xem sao: Vẫn Alt+F, sau đó ấn chữ A. Lưu file dưới dạng *.CSV
Thoát ra rồi đổi phần mở rộng của file vừa lưu thành *.xls là xong. Khỏi cần code.
Cách này hơi bị độc đáo à nha!
Nếu lưu thành .csv chắc là mất hết định dạng phải không Kiệt?
 
Cách này hơi bị độc đáo à nha!
Nếu lưu thành .csv chắc là mất hết định dạng phải không Kiệt?
Đúng vậy anh Ndu ơi! Nó chỉ lưu lại text và giá trị của worksheet mà thôi

Formatting and features that are not transferred in Excel file format conversions The CSV (*.csv) file format saves only the text and values as they are displayed in cells of the active worksheet. All rows and all characters in each cell are saved. Columns of data are separated by commas, and each row of data ends in a carriage return. If a cell contains a comma, the cell contents are enclosed in double quotation marks.
If cells display formulas instead of formula values, the formulas are converted as text. All formatting, graphics, objects, and other worksheet contents are lost. The euro symbol will be converted to a question mark.


Theo thông tin bên trên thì sau khi lưu dưới dạng *.CSV, nó chỉ lưu dữ liệu của sheet hiện hành mà thôi, các sheet khác coi như "đi đời", các công thức sẽ biến thành giá trị hết, các formatting, grahics, v.v cũng bị loại bỏ hết! Cân nhắc trước khi dùng! %#^#$
 
Cách này hơi bị độc đáo à nha!
Nếu lưu thành .csv chắc là mất hết định dạng phải không Kiệt?

Bạn ơi.
code bạn viết rất hay và ngắn gọn. thế ko thêm để có thể ko lưu cả code va form trong file mới được à.
Mình cần dùng code chứ save as bình thường thì nói làm gì. vì đang dùng form nên tạo nút lệnh trên forn luôn mà bạn.
nhờ các bác chỉ giáo nhé.
thanks các bác nhiều.
 
HB thì thấy khi save as sang dạng .csv thì mất luôn Format: vậy nó ra cái chữ không đọc được thì làm thế nào nhỉ? Hơn nữa, yêu cầu ban đầu là chuyển dữ liệu của cả một hệ thống! làm thế này thì thủ công đến bao giờ xong?

Chạy từ 1 đến m file gốc trong thư mục
----------Tạo file đích
----------Chạy từ 1 đến n sheet của file gốc
------------Tạo sheet đích trên file đích
------------Copy data sang sheet đích
----------next
next

Kiểu đó thì HB bó tay! Các bác chỉ giúp ạh!
Thuy_IT đã viết:
Bạn ơi.
code bạn viết rất hay và ngắn gọn. thế ko thêm để có thể ko lưu cả code va form trong file mới được à.
Mình cần dùng code chứ save as bình thường thì nói làm gì. vì đang dùng form nên tạo nút lệnh trên forn luôn mà bạn.
nhờ các bác chỉ giáo nhé.
thanks các bác nhiều.
Trả lời rồi còn gì nữa!
Thuy_IT đã viết:
Thêm code như thế nào để file lưu không chứa các code, các nút command,... các bạn chỉ giúp mình nhé!
Trời! bạn muốn 2 kiểu hả? một là lưu code, form, command,... hai là chỉ lưu dữ liệu. !$@!!. Bạn có 2 bài viết với 2 yêu cầu ngược nhau đấy!
 
Hi bạn.
Cảm ơn vì bạn đã trả lời. Nhưng hai câu mình hỏi là giống nhau đó. hihi. Sorry vì không rõ ý nhé.
Ý mình: Thêm code để file lưu không chứa các code, các nút command,...
Còn tạo code sao lưu hoàn toàn thì mình làm rồi.
Chào bạn.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom