Giúp mình lưu file excel với tên là một cell trong sheet

  • Thread starter Thread starter ghost85
  • Ngày gửi Ngày gửi
Liên hệ QC

ghost85

Thành viên mới
Tham gia
15/4/09
Bài viết
17
Được thích
7
Công việc của mình thường phải làm với những biểu mẫu cố định, lặp đi lặp lại nên khá nhàm chán, mình muốn tạo một macro để lưu file với tên đã định trước, cụ thể như sau:
Một biểu mẫu trong đó có một ô nhập số hóa đơn, một ô nhập tên Cty bán hàng, một ô nhập loại kho hàng hóa nhập vào. Mình muốn tạo tên file khi lưu gồm Tên công ty+số hóa đơn+loại kho(tất cả đều viết tắt). Ví dụ: Cty CPD và VTYT Phương Anh, số hóa đơn:32785, loại kho: Bảo hiểm thì tên file sẽ là PA32785BH.xls, các bạn biết tạo một macro lưu tên file tự động như vậy chỉ cho mình với, thank nhiều
 
Ví dụ: Ô A1 chứa tên công ty; ô B1 chứa tên hóa đơn; ô C1 chứa tên kho.
Bạn sử dụng đoạn code sau:

Mã:
Sub Luu()
        ten = Application.Range("A1").Value & Range("B1").Value & Range("C1").Value
        tenfile = "D:\" & ten & ".xls"
        ActiveWorkbook.SaveAs Filename:= _
        tenfile, FileFormat:=xlNormal, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
End Sub
 
Upvote 0
Ô mình đã thử rồi nhưng nó không tự động chạy, nó chỉ chạy khi chọn lệnh Run trong cửa sổ View Code thôi và sau khi đã Save rồi ta lại nhập số liệu vào biểu mẫu đó và Save As (nhấn F12) để lưu lại với tên hóa đơn mới (vừa nhập) nhưng nó vẫn lưu với tên cũ. Bạn có cách nào không?
 
Upvote 0
Ô mình đã thử rồi nhưng nó không tự động chạy, nó chỉ chạy khi chọn lệnh Run trong cửa sổ View Code thôi và sau khi đã Save rồi ta lại nhập số liệu vào biểu mẫu đó và Save As (nhấn F12) để lưu lại với tên hóa đơn mới (vừa nhập) nhưng nó vẫn lưu với tên cũ. Bạn có cách nào không?

Bạn vẽ 1 hình bất kỳ rồi click chuột phải vào hình, chọn Assign Macro và chọn Macro cần chạy.
 
Lần chỉnh sửa cuối:
Upvote 0
Chỉ vầy thôi là đủ:
PHP:
Sub LuuFile()
  ThisWorkbook.SaveCopyAs [B1] & [B2] & [B3] & ".xls"
End Sub
 

File đính kèm

Upvote 0
Bạn xem dùm mình với. Sao mình làm mãi mà không thấy chạy? --)(
Bạn sửa lại thế này thì nó sẽ Save đúng ngay thư mục chứa file Main
PHP:
Sub LuuFile()
  With ThisWorkbook
    .SaveCopyAs .Path & "\" & [B1] & [B2] & [B3] & ".xls"
  End With
End Sub
Còn muốn lưu nơi khác thì thay .Path thành cái khác nhé
Cái hay (cũng là cái dở) của SaveCopyAs là: Nó chẳng hề cảnh báo khi có trùng tên file (nó ghi đè luôn)
 
Upvote 0
Bạn sửa lại thế này thì nó sẽ Save đúng ngay thư mục chứa file Main
PHP:
Sub LuuFile()
  With ThisWorkbook
    .SaveCopyAs .Path & "\" & [B1] & [B2] & [B3] & ".xls"
  End With
End Sub
Còn muốn lưu nơi khác thì thay .Path thành cái khác nhé
Cái hay (cũng là cái dở) của SaveCopyAs là: Nó chẳng hề cảnh báo khi có trùng tên file (nó ghi đè luôn)

Nếu muốn xoá các nút command + code trong file save á thì thêm code thế nào vậy?.

Thân.
 
Upvote 0
uh, cảm ơn các bạn nhiều, mình thấy cả hai cách đều hay, với cách của QuocPhong, mình gán phím tắt cho Macro này là Ctrl+S, vì tên file không bao giờ trùng nhau (theo số hóa đơn đỏ nên không trùng, nếu có trùng thì khác công ty)nên khi nhấn Ctrl+S file luôn được lưu với ten mới mà không ghi đè. Vì tên công ty, tên loại kho đều dài mà tên file viết tắt nên mình thêm đoạn code với Select Case vào chạy cũng ổn lắm. Ah tiện đây cho mình hỏi luôn, có cách nào không cho người dùng cuộn ngang bảng tính không nhỉ mình tìm nhưng không thấy Hide
horizontal Scroll, mới dùng Office 2007 nên chưa rõ lắm,mà có hide nó đi thì vẫn dùng mouse để Scroll được, mình muốn vô hiệu hóa chức năng cuộn ngan của bảng tính.
 
Upvote 0
Nếu muốn xoá các nút command + code trong file save á thì thêm code thế nào vậy?.

Thân.
Câu hỏi hay! Nhưng vụ này xem ra chẳng dể dàng gì
Tôi nghĩ ta sẽ làm theo hướng giống như cách ta thao tác bằng tay:
- Click phải vào Sheet tab, chọn Move or copy\New book
- Tiếp theo là save Workbook vừa mới tạo
Hãy record macro quá trình này xem (bảo đãm file mới sẽ không chưa code)
 
Upvote 0
Nếu muốn xoá các nút command + code trong file save á thì thêm code thế nào vậy?.

Thân.
Ah... tôi nghĩ ra rồi! Code này sẽ save dử liệu đang có ra 1 file mới nhưng không chứa code VBA
PHP:
Sub SaveCopy()
  With ThisWorkbook
    .Sheets.Copy
    ActiveWorkbook.SaveAs .Path & "\Update" & Format(Now, "ddmmyy_hhmmss") & ".xls"
    ActiveWindow.Close
  End With
End Sub
Đoạn:
.Path & "\Update" & Format(Now, "ddmmyy_hhmmss") & ".xls"
Bạn muốn thay thành cái gì tùy thích!
Riêng phần xóa nút nhấn, tôi nghĩ đơn giản là ta đừng vẽ nó ra, khi lưu sẽ không có nút này!
Ở đây các bạn sẽ thấy sự khác nhau rất rõ ràng giữa ThisWorkbook ActiveWorkbook mà đôi khi chúng ta vẫn nghĩ chúng là một
 
Upvote 0
Ví dụ: Ô A1 chứa tên công ty; ô B1 chứa tên hóa đơn; ô C1 chứa tên kho.
Bạn sử dụng đoạn code sau:

Mã:
Sub Luu()
ten = Application.Range("A1").Value & Range("B1").Value & Range("C1").Value
tenfile = "D:\" & ten & ".xls"
ActiveWorkbook.SaveAs Filename:= _
tenfile, FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub


Có cách nào khi mình thoát excel thì tự kích hoạt chạy chương trình tự save file lại (vì nhiều khi quên save trước khi tắt excel). Và khi tắt nó nhảy ra mà hình save as nhu file đính kèm để mình chọn đường dẫn để lưu. Trong dòng tên file nó thể hiện sẵn tên file lấy từ các cell như mình quy định sẵn.
 

File đính kèm

  • Save as.jpg
    Save as.jpg
    292.3 KB · Đọc: 89
Upvote 0
Có cách nào khi mình thoát excel thì tự kích hoạt chạy chương trình tự save file lại (vì nhiều khi quên save trước khi tắt excel). Và khi tắt nó nhảy ra mà hình save as nhu file đính kèm để mình chọn đường dẫn để lưu. Trong dòng tên file nó thể hiện sẵn tên file lấy từ các cell như mình quy định sẵn.

Chọn vào ThisWorkbook, copy cái code dưới đây vào:

PHP:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Workbooks(ThisWorkbook.Name).Save
End Sub

Thông thường tôi không dùng cái này, bởi vì đôi lúc thao tác của mình bị nhầm lẫn, bị lỗi, cần thoát ra để giữ lại hiện trạng ban đầu. Làm tới đâu Save tới đó chắc cú hơn.
 
Lần chỉnh sửa cuối:
Upvote 0
Cái này nó save luôn mà, nó đâu có hiện ra cái khung save as như trên để mình có thể thay tên hoặc chọn đường dẫn khác đâu?
 
Upvote 0
Web KT

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

Back
Top Bottom