Đổi tên file excel xlsx theo ý muốn

Sco

Yêu THVBA
chào mọi người
Mình có một vấn đề nhờ mọi người giúp đỡ: mình có một file excel cập nhật dữ liệu hàng ngày.
Sau khi save dữ liệu cập nhật mình muốn đổi tên file theo ý muốn bằng VBA thì phải làm như thế nào.( vị trí đặt file là cố định).
Thao tác này làm để cho người sử dụng không cần sửa code cũng có thể thao tác được.
Cảm ơn mọi người
 

tuhocvba

Administrator
Thành viên BQT
Khó nhỉ. File đang mở thì không biết đổi tên như thế nào, mình sẽ tìm hiểu xem sao.
Nếu tạo ra bản sao lưu dưới tên khác lưu cùng thư mục đó thì có vẻ dễ làm hơn.
 
B

bvtvba

Guest
Nếu làm bằng tay, thì chủ topic có đổi được tên file đang mở không? Mình nghĩ chỉ có thể Save As... lưu thành file khác.
 

Sco

Yêu THVBA
Khó nhỉ. File đang mở thì không biết đổi tên như thế nào, mình sẽ tìm hiểu xem sao.
Nếu tạo ra bản sao lưu dưới tên khác lưu cùng thư mục đó thì có vẻ dễ làm hơn.
ý mình là sau khi save file xong rồi ta mới tiến hành thao tác đổi tên file.
Nhưng thao tác đó làm như thế nào để không cần phải sửa code VBA, ví dụ như tên file mới được đặt thông qua inputbox chẳng hạn.
 
B

bvtvba

Guest
ý mình là sau khi save file xong rồi ta mới tiến hành thao tác đổi tên file.
Nhưng thao tác đó làm như thế nào để không cần phải sửa code VBA, ví dụ như tên file mới được đặt thông qua inputbox chẳng hạn.
File của bạn khi save thì nó vẫn đang mở, chưa đóng. Về nguyên tắc file đang mở thì không thể đổi tên file. Bạn có thể đổi tên file đang mở bằng thao tác bằng tay không?
 

Sco

Yêu THVBA
File của bạn khi save thì nó vẫn đang mở, chưa đóng. Về nguyên tắc file đang mở thì không thể đổi tên file. Bạn có thể đổi tên file đang mở bằng thao tác bằng tay không?
Ta đóng file lại rồi thực hiện thao tác đổi tên file sau.
Như vậy có thể làm bằng VBA được không bạn.
Cảm ơn bạn.
 
B

bvtvba

Guest
Ta đóng file lại rồi thực hiện thao tác đổi tên file sau.
Như vậy có thể làm bằng VBA được không bạn.
Cảm ơn bạn.
Khi bạn đóng file đó lại thì macro của file đó đâu còn tác dụng nữa bạn ơi. Bạn chờ xem admin có cách giải quyết không. Cái này mình thấy khó.
 

Sco

Yêu THVBA
@bvtvba @tuhocvba
xin lỗi hai bạn, mình viết bài không rõ ý, mình sửa lại: mình có file excel A( macro chạy ở file A). Mình copy dữ liệu từ file A sang file B, sau đó đổi tên file B theo ý muốn của người sử dụng. Trong quá trình chạy macro thì file A vẫn mở. Việc copy dữ liệu mình đã làm được nhưng thao tác đổi tên thì chưa làm được, mọi người giúp mình với.( thao tác đổi tên làm để người không biết VBA cũng làm được).
Cảm ơn hai bạn
 

Euler

Administrator
Thành viên BQT
Mọi người đang hiểu sai ý chủ topic thì phải. Bạn chủ topic nên biểu diễn ý muốn bằng hình vẽ để tránh hiểu lầm.
Bạn cần đăng nhập để thấy hình ảnh


File A là file Gốc. Khi bạn ấn Save, bạn muốn tạo ra file B (tên file do người dùng tự nhập). Lúc này File A vẫn đang Open (không bị đóng).
Mình hiểu vậy đúng không?
Ngoài ra mình muốn hỏi, nơi lưu trữ file B như bạn nói là cố định. Mình muốn xác nhận thêm, nơi lưu trữ file B có cùng folder với file A không?
 
B

bvtvba

Guest
@bvtvba @tuhocvba
xin lỗi hai bạn, mình viết bài không rõ ý, mình sửa lại: mình có file excel A( macro chạy ở file A). Mình copy dữ liệu từ file A sang file B, sau đó đổi tên file B theo ý muốn của người sử dụng. Trong quá trình chạy macro thì file A vẫn mở. Việc copy dữ liệu mình đã làm được nhưng thao tác đổi tên thì chưa làm được, mọi người giúp mình với.( thao tác đổi tên làm để người không biết VBA cũng làm được).
Cảm ơn hai bạn
Mất thời gian quá bạn ơi.
File A và File B đang được mở. Bạn muốn đóng file B lại và đổi tên file B thành file C (tên C là do người dùng nhập vào đúng không? )
 

tuhocvba

Administrator
Thành viên BQT
@Sco : Hãy mô tả chính xác điều bạn muốn bằng hình vẽ.
File nào đang được mở? Macro viết trên file nào. Tác động vào file nào. Trạng thái các file đang mở hay close nên làm rõ ra.
 

Euler

Administrator
Thành viên BQT
Bạn có thể bớt chút thời gian để trình bày lại cho dễ hiểu không ạ?
  • Nếu bạn không biết cách upload ảnh lên diễn đàn, bạn vui lòng tham khảo topic sau: .
  • Bạn lưu ý phải sử dụng thẻ Code khi viết code trên forum. Xin xem mục 4 trong .
  • Bạn nên nói rõ Input là gì? Output muốn ra sao?
  • Bạn nên có file demo. Bạn có thể upload file lên google drive hoặc mediafire.com rồi dẫn link về diễn đàn.

Một bài viết trình bày dễ hiểu là một bài viết sử dụng hình minh họa trực quan. Một bài viết chỉ toàn chữ sẽ khiến người khác không muốn đọc.

Một bài viết dễ hiểu sẽ giảm thiểu thời gian đọc hiểu cho người khác, bạn sẽ nhanh chóng nhận được hỗ trợ nếu bài viết của bạn là một bài viết dễ hiểu.
Chúng tôi mong bạn hiểu và hợp tác.
 

Sco

Yêu THVBA
Mọi người đang hiểu sai ý chủ topic thì phải. Bạn chủ topic nên biểu diễn ý muốn bằng hình vẽ để tránh hiểu lầm.
Bạn cần đăng nhập để thấy hình ảnh


File A là file Gốc. Khi bạn ấn Save, bạn muốn tạo ra file B (tên file do người dùng tự nhập). Lúc này File A vẫn đang Open (không bị đóng).
Mình hiểu vậy đúng không?
@tuhocvba đùng như bạn diễn giải. file A ở khác vị trí với file B bạn ah.
Cảm ơn bạn
 

NhanSu

SMod
Thành viên BQT
Xin lỗi bạn @Sco , mình hiểu nhầm yêu cầu. Sau đây, là code tạo mới 1 file để copy dữ liệu vào, trước khi đóng file chính người dung sẽ nhập tên file mới để lưu.
Module
Mã:
Option Explicit
Public wb As Workbook
Sub ABC()
    Set wb = Workbooks.Add
    'your code here
End Sub
Workbook
Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim fn As String, fpath As String
    Application.DisplayAlerts = False
    If Not wb Is Nothing Then
        fpath = ThisWorkbook.Path
        fn = InputBox("Please enter file name")
        On Error Resume Next
        wb.Close True, fpath & "\" & fn & ".xlsx"
    End If
    Application.DisplayAlerts = True
End Sub
 

tuhocvba

Administrator
Thành viên BQT
@NhanSu : Cám ơn trợ giúp của NhanSu. Topic này mình sẽ không theo dõi nữa. Mọi việc nhờ bạn giúp đỡ nhé.
Mà hình như chủ topic muốn save thì mới chạy macro nên thay bằng sự kiện này:
Mã:
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Code here
End Sub
 

Sco

Yêu THVBA
Cảm ơn mọi người đã chỉ cho mình.
Bạn @NhanSu cho mình hỏi chút
Đoạn: wb.Close True, fpath & "\" & fn & ".xlsx"
tại sao sau khi close workbook mình phải ,fpath....
Cảm ơn bạn.
 
B

bvtvba

Guest
Đoạn: wb.Close True, fpath & "\" & fn & ".xlsx"
tại sao sau khi close workbook mình phải ,fpath....
Cảm ơn bạn.
Theo mình hiểu:
Bạn mở một workbook mới, ghi nội dung vào. Close workbook.
Lúc này máy tính sẽ hỏi bạn muốn lưu vào đâu => Bạn phải nhập đường dẫn và tên file.
Ý nghĩa đó tương đương với :
Mã:
 wb.Close True, fpath & "\" & fn & ".xlsx"
 
Top