[Nhờ giúp đỡ] code vba đóng file, sửa tên file, mở lại file

Liên hệ QC

Ngày mai trời lại sáng

Thành viên thường trực
Tham gia
4/7/21
Bài viết
339
Được thích
139
Chào mọi người
Hiện giờ em đang có nhiều file link đến file có tên "A.xlsm" (tất cả các file cùng để chung vào một folder) , nhưng file "A.xlsm" này thường xuyên bị đổi tên theo ngày tháng năm hoặc tên khác không theo quy định nào.
Nhờ mọi người giúp em(cháu) một đoạn code mở file A này lên kiểm tra nếu không file tên "A.xlsm" sẽ đóng lại và sửa tên đúng với "A.xlsm" rồi mở lại file để các file đang mở cùng file "A.xlsm" có thể link được đến file "A.xlsm" .
 
Chào mọi người
Hiện giờ em đang có nhiều file link đến file có tên "A.xlsm" (tất cả các file cùng để chung vào một folder) , nhưng file "A.xlsm" này thường xuyên bị đổi tên theo ngày tháng năm hoặc tên khác không theo quy định nào.
Nhờ mọi người giúp em(cháu) một đoạn code mở file A này lên kiểm tra nếu không file tên "A.xlsm" sẽ đóng lại và sửa tên đúng với "A.xlsm" rồi mở lại file để các file đang mở cùng file "A.xlsm" có thể link được đến file "A.xlsm" .
Khi nó đã đổi tên X,Y,Z => code làm sao biết nó tên gì để mở nó lên?

.
 
Upvote 0
Chào mọi người
Hiện giờ em đang có nhiều file link đến file có tên "A.xlsm" (tất cả các file cùng để chung vào một folder) , nhưng file "A.xlsm" này thường xuyên bị đổi tên theo ngày tháng năm hoặc tên khác không theo quy định nào.
Nhờ mọi người giúp em(cháu) một đoạn code mở file A này lên kiểm tra nếu không file tên "A.xlsm" sẽ đóng lại và sửa tên đúng với "A.xlsm" rồi mở lại file để các file đang mở cùng file "A.xlsm" có thể link được đến file "A.xlsm" .
Thường xuyên bị đổi tên là ai đổi tên? Còn nếu muốn xử lý thì bỏ nó vào một folder mà folder đó chỉ có mình nó, hoặc nếu để chung với các file khác thì nó là file xlsm duy nhất, các file kia là xlsx. Phải có dấu hiệu nhận biết mới xử lý được
 
Upvote 0
Khi nó đã đổi tên X,Y,Z => code làm sao biết nó tên gì để mở nó lên?

.
Em muốn code này trong chính cái file "A.xlsm", nếu mở lên kiểm tra nó nằm trong folder có tên là "link báo cáo" và tền file khác "A.xlsm" thì đổi tên rồi đóng lại sau đó mở lại.

Thường xuyên bị đổi tên là ai đổi tên? Còn nếu muốn xử lý thì bỏ nó vào một folder mà folder đó chỉ có mình nó, hoặc nếu để chung với các file khác thì nó là file xlsm duy nhất, các file kia là xlsx. Phải có dấu hiệu nhận biết mới xử lý được
File "A.xlsm" em copy từ nguồn khác bác ơi, người khác đổi. Trong thư mục có nhiều file nhiều đuôi khác nhau.
 
Upvote 0
Em muốn code này trong chính cái file "A.xlsm", nếu mở lên kiểm tra nó nằm trong folder có tên là "link báo cáo" và tền file khác "A.xlsm" thì đổi tên rồi đóng lại sau đó mở lại.
Ý tưởng của tui là: Nếu tên khác "A.xlsm" sẽ save as với tên "A.xlsm" rồi xóa file cũ.

Dùng Sub Workbook_Open()
 
Upvote 0
Ý tưởng của tui là: Nếu tên khác "A.xlsm" sẽ save as với tên "A.xlsm" rồi xóa file cũ.

Dùng Sub Workbook_Open()
File copy từ nguồn khác mờ, thay vì viết Sub Workbook_Open(), save as thủ công lẹ hơn
Hai bác giúp em bằng đoạn code thực tế để em kiểm nghiệm với, saveAs liệu có ảnh hưởng gì đến các file đang mở và link đến không các bác.
Ví dụ em đang mở file "A.xlsm" và các file link đến file này, sau đó copy lại và mở file "xyz.xlsm" (file để đổi tên sang "A.xlsm") để kiểm tra nếu khác tên "A.xlsm" thì xử lý.. file "xyz.xlsm" đồng thời tắt và xóa hoặc thay tên cho cả file "A.xlsm" đang mở từ trước?
 
Upvote 0
(@$%@.....các bác đi đâu hết rồi.
Thử code này, có vẻ như đang lỗi với tên file tiếng việt:
Mã:
Option Explicit
Sub NTKTNN()
Dim Wb As Workbook, strWb As String, dFileName As String
Application.DisplayAlerts = False
Set Wb = Application.ThisWorkbook
strWb = LCase(Wb.Name)
dFileName = "A.xlsm"
If strWb <> LCase(dFileName) Then
    Wb.SaveCopyAs Wb.Path & "\" & dFileName
    SuicideSub
Else
    MsgBox dFileName & " - Ten file phu hop"
End If
Application.DisplayAlerts = True
End Sub

Sub SuicideSub()
With ThisWorkbook
    .Saved = True
    .ChangeFileAccess xlReadOnly
    Kill .FullName
    Application.Quit
End With
End Sub
 
Upvote 0
Thử code này, có vẻ như đang lỗi với tên file tiếng việt:
Mã:
Option Explicit
Sub NTKTNN()
Dim Wb As Workbook, strWb As String, dFileName As String
Application.DisplayAlerts = False
Set Wb = Application.ThisWorkbook
strWb = LCase(Wb.Name)
dFileName = "A.xlsm"
If strWb <> LCase(dFileName) Then
    Wb.SaveCopyAs Wb.Path & "\" & dFileName
    SuicideSub
Else
    MsgBox dFileName & " - Ten file phu hop"
End If
Application.DisplayAlerts = True
End Sub

Sub SuicideSub()
With ThisWorkbook
    .Saved = True
    .ChangeFileAccess xlReadOnly
    Kill .FullName
    Application.Quit
End With
End Sub
Em cảm ơn bác, em thử đang bị mấy vấn đề: các file đang mở cùng tắt theo,file không khớp tên sau khi đóng chưa thấy sửa lại tên thành "A.xlsm" cũng không thấy mở lại lên mà tự xóa.
 
Upvote 0
Em cảm ơn bác, em thử đang bị mấy vấn đề: các file đang mở cùng tắt theo,file không khớp tên sau khi đóng chưa thấy sửa lại tên thành "A.xlsm" cũng không thấy mở lại lên mà tự xóa.
Thực ra mình thấy đề bài này không mấy hào hứng, có lẽ bạn có cách khác thực hiện dễ dàng hơn chứ nhỉ?? Mà mình có thắc mắc, bạn đã đi copy file từ nguồn khác về, thì F2 sửa tên cũng một nốt nhạc, sao lại kỳ công để viết code thế nhỉ. hơi khó hiểu
 
Upvote 0
Em muốn code này trong chính cái file "A.xlsm", nếu mở lên kiểm tra nó nằm trong folder có tên là "link báo cáo" và tền file khác "A.xlsm" thì đổi tên rồi đóng lại sau đó mở lại.


File "A.xlsm" em copy từ nguồn khác bác ơi, người khác đổi. Trong thư mục có nhiều file nhiều đuôi khác nhau.
Cứ suy nghĩ thế này cho đơn giản đi

- file copy đầu tiên bạn đổi thành B.xlsm
- Rồi từ đó dùng code ngoài , đổi file B.xlsm thành A.xlsm

Là xong

Đọc xong, thấy có vẻ sai sai thế nào đúng không, nếu tìm ra được chỗ sai sai đó , sẽ có cách
 
Upvote 0
Những người tham gia chủ đề này có đủ trình độ để giúp. Có điều không ai hiểu đúng 100% tình huống, dụng ý của bạn. Thánh cũng chưa hiểu thì sao giúp được, ai rồi cũng thế thôi.
 
Upvote 0
Và thực sự chú ấy cũng đã đến \\^^ // .. chú ơi có chỗ nào chú chưa hiểu cháu sẽ giải thích ạ?
 
Upvote 0
Và thực sự chú ấy cũng đã đến \\^^ // .. chú ơi có chỗ nào chú chưa hiểu cháu sẽ giải thích ạ?
Trích
Ví dụ em đang mở file "A.xlsm" và các file link đến file này, sau đó copy lại và mở file "xyz.xlsm" (file để đổi tên sang "A.xlsm") để kiểm tra nếu khác tên "A.xlsm" thì xử lý.. file "xyz.xlsm" đồng thời tắt và xóa hoặc thay tên cho cả file "A.xlsm" đang mở từ trước?

Code trong A.xlsm, và A.xlsm đang mở thì người dùng biết phải chạy code nào. Nhưng làm sao code biết là phải mở tập tin xyz.xlsm mà không phải là abc.xlsm, "ngay mai em đi.xlsm"? Nếu tôi hiểu bạn viết
nhưng file "A.xlsm" này thường xuyên bị đổi tên theo ngày tháng năm hoặc tên khác không theo quy định nào.
Nếu là thế thì thậm chí bạn còn không biết bây giờ nó tên là gì (không theo quy định nào) chứ nói gì tới code. Nó cũng bó tay thôi. Mà nếu A.xlsm ĐÃ bị đổi tên thành xyz.xlsm thì làm sao lại còn A.xlsm để bạn mở như ở trên?

Và cái gọi là "xử lý" như trong đoạn trích nó là gì? Chỉ đơn giản là đổi tên hay thêm bớt nội dung? Nếu chỉ đổi tên vì nội dung y hệt như A.xlsm thì lại có câu hỏi: khi xyz.xlsm có nội dung y như A.xlsm thì tại sao lại phải xóa A.xlsm và đổi tên xyz.xlsm thành A.xlsm? Có A.xlsm rồi, và A.xlsm tốt ngang hàng xyz.xlsm, thì sao lại phải nhọc công như vậy?

Bạn chờ người khác nhé. Bây giờ mà tôi phải ngồi gõ những cái không hiểu thì tôi ngại lắm. Tốt nhất là cố giải thích cho người khác hiểu. Còn nếu vẫn không ai hiểu thì chịu thôi. Tôi không muốn tham gia, vì tôi chậm hiểu lắm, không lanh lợi được như những người khác.
 
Upvote 0
Trích


Code trong A.xlsm, và A.xlsm đang mở thì người dùng biết phải chạy code nào. Nhưng làm sao code biết là phải mở tập tin xyz.xlsm mà không phải là abc.xlsm, "ngay mai em đi.xlsm"? Nếu tôi hiểu bạn viết

Nếu là thế thì thậm chí bạn còn không biết bây giờ nó tên là gì (không theo quy định nào) chứ nói gì tới code. Nó cũng bó tay thôi. Mà nếu A.xlsm ĐÃ bị đổi tên thành xyz.xlsm thì làm sao lại còn A.xlsm để bạn mở như ở trên?

Và cái gọi là "xử lý" như trong đoạn trích nó là gì? Chỉ đơn giản là đổi tên hay thêm bớt nội dung? Nếu chỉ đổi tên vì nội dung y hệt như A.xlsm thì lại có câu hỏi: khi xyz.xlsm có nội dung y như A.xlsm thì tại sao lại phải xóa A.xlsm và đổi tên xyz.xlsm thành A.xlsm? Có A.xlsm rồi, và A.xlsm tốt ngang hàng xyz.xlsm, thì sao lại phải nhọc công như vậy?

Bạn chờ người khác nhé. Bây giờ mà tôi phải ngồi gõ những cái không hiểu thì tôi ngại lắm. Tốt nhất là cố giải thích cho người khác hiểu. Còn nếu vẫn không ai hiểu thì chịu thôi. Tôi không muốn tham gia, vì tôi chậm hiểu lắm, không lanh lợi được như những người khác.

Chú ơi, cháu tóm gọi lại thế này:

Cháu thường copy /download từ mail 1 file có tên "xyz.xlsm" hoặc là "ngay mai em đi.xlsm", đây gọi là file chứa dữ liệu nguồn để cháu có thể link đến các file tiếp theo cháu tạm gọi file này là file nguồn.xlsm (thay vì trước gọi là "A.xlsm") giờ cháu gọi tên là "nguồn.xlsm", đây là file chưá đoạn code cháu cần xử lý gọi tên là "Xuly_mo_file", đoạn code này khi mở file nếu nó không nằm trong thư mục có tên "link báo cáo" thì không có động tĩnh gì luôn ngược lại nếu nó nằm trong thư mục có tên "link báo cáo" thì nó sẽ sẽ tự động thực thi code với các tính năng sau:

Kiểm tra vòng ngoài:
1. Kiểm tra xem bản thân nó tên là gì có phải "nguồn.xlsm" ?
Nếu đúng khôg làm gì cả, hiện thông báo "OK,không cần phải làm gì thêm."

2.Nếu sai không phải tên là "nguồn.xlsm" mà là "ngày mai em đi.xlsm".. nhưng vì là bản thân các file này trong nó đã có code "Xuly_mo_file" nên nó sẽ hoạt động khi mở file:

Tiếp đến kiểm tra vòng trong mở với file có tên "ngày mai em đi.xlsm":
2.1 Kiểm tra xem các file đang mở có file nào tên là "nguồn.xlsm" không?
Nếu có đóng "nguồn.xlsm" lại và đổi tên file "nguồn.xlsm" sang thành một file có tên khác "chào em.xlsm" ,chỉ đóng duy nhất file "nguồn.xlsm" không đóng file khác nếu cùng mở.

2.2. Tự động đóng "ngày mai em đi.xlsm" và đổi sang tên "nguồn.xlsm"
2.3 Tự mở "nguồn.xlsm" sau khi đã đổi tên hiện thông báo "OK,không cần phải làm gì thêm."

Cháu giải thích vậy chú hiểu không chú?
 
Upvote 0
Chú ơi, cháu tóm gọi lại thế này:

Cháu thường copy /download từ mail 1 file có tên "xyz.xlsm" hoặc là "ngay mai em đi.xlsm", đây gọi là file chứa dữ liệu nguồn để cháu có thể link đến các file tiếp theo cháu tạm gọi file này là file nguồn.xlsm (thay vì trước gọi là "A.xlsm") giờ cháu gọi tên là "nguồn.xlsm", đây là file chưá đoạn code cháu cần xử lý gọi tên là "Xuly_mo_file", đoạn code này khi mở file nếu nó không nằm trong thư mục có tên "link báo cáo" thì không có động tĩnh gì luôn ngược lại nếu nó nằm trong thư mục có tên "link báo cáo" thì nó sẽ sẽ tự động thực thi code với các tính năng sau:

Kiểm tra vòng ngoài:
1. Kiểm tra xem bản thân nó tên là gì có phải "nguồn.xlsm" ?
Nếu đúng khôg làm gì cả, hiện thông báo "OK,không cần phải làm gì thêm."

2.Nếu sai không phải tên là "nguồn.xlsm" mà là "ngày mai em đi.xlsm".. nhưng vì là bản thân các file này trong nó đã có code "Xuly_mo_file" nên nó sẽ hoạt động khi mở file:

Tiếp đến kiểm tra vòng trong mở với file có tên "ngày mai em đi.xlsm":
2.1 Kiểm tra xem các file đang mở có file nào tên là "nguồn.xlsm" không?
Nếu có đóng "nguồn.xlsm" lại và đổi tên file "nguồn.xlsm" sang thành một file có tên khác "chào em.xlsm" ,chỉ đóng duy nhất file "nguồn.xlsm" không đóng file khác nếu cùng mở.

2.2. Tự động đóng "ngày mai em đi.xlsm" và đổi sang tên "nguồn.xlsm"
2.3 Tự mở "nguồn.xlsm" sau khi đã đổi tên hiện thông báo "OK,không cần phải làm gì thêm."

Cháu giải thích vậy chú hiểu không chú?
Tập tin "nguồn.xlsm" có code thì mọi người đã biết từ đâu có. Nhưng "ngày mai em đi.xlsm" từ đâu có mà cũng có code y như "nguồn.xlsm"? Và như tôi đã viết, nếu "ngày mai em đi.xlsm" cũng có nội dung y hệt như "nguồn.xlsm" thì tại sao phải thao tác nhọc công như thế? nguồn.xlsm tốt ngang hàng ngày mai em đi.xlsm cơ mà.

Thực ra cứ viết code như bạn yêu cầu thì cũng chả khó. Nhưng tôi là người không chiều người khác tới bến. Nếu thấy yêu cầu vô lý thì tôi không muốn mất công. Nếu không ai làm hộ thì tối nay tôi sẽ làm. Nhưng chỉ làm như tôi hiểu và làm 1 lần. Giải thích, thông tin nhỏ giọt, đoán mò là những món tôi không thích.
 
Upvote 0
Tập tin "nguồn.xlsm" có code thì mọi người đã biết từ đâu có. Nhưng "ngày mai em đi.xlsm" từ đâu có mà cũng có code y như "nguồn.xlsm"? Và như tôi đã viết, nếu "ngày mai em đi.xlsm" cũng có nội dung y hệt như "nguồn.xlsm" thì tại sao phải thao tác nhọc công như thế? nguồn.xlsm tốt ngang hàng ngày mai em đi.xlsm cơ mà.

Thực ra cứ viết code như bạn yêu cầu thì cũng chả khó. Nhưng tôi là người không chiều người khác tới bến. Nếu thấy yêu cầu vô lý thì tôi không muốn mất công. Nếu không ai làm hộ thì tối nay tôi sẽ làm. Nhưng chỉ làm như tôi hiểu và làm 1 lần. Giải thích, thông tin nhỏ giọt, đoán mò là những món tôi không thích.
"ngày mai em đi.xlsm" là code cháu sẽ đưa vào đây và sẽ nói với cho người sở hữu file "ngày mai em đi.xlsm" này là cháu phải làm vậy, bởi vì mỗi là họ cập nhật thay đổi dữ liệu vào là họ lại phải sửa và gửi tên khác, do đó mà dữ liệu nội dung bên trong là khác với nội dung file cũ.Ví dụ danh sách ca mắc codVid vẫn là file đó hôm nay nội dung khác ngày mai có thể sẽ khác và có thể không khác chỉ khác cái tên .
Cháu từ bài 1 đến bài này chưa thay đổi quan điểm hay ý tưởng,tất cả cháu đã tóm gọn lại ở đây, cháu không thay đôi:
Chú ơi, cháu tóm gọi lại thế này:

Cháu thường copy /download từ mail 1 file có tên "xyz.xlsm" hoặc là "ngay mai em đi.xlsm", đây gọi là file chứa dữ liệu nguồn để cháu có thể link đến các file tiếp theo cháu tạm gọi file này là file nguồn.xlsm (thay vì trước gọi là "A.xlsm") giờ cháu gọi tên là "nguồn.xlsm", đây là file chưá đoạn code cháu cần xử lý gọi tên là "Xuly_mo_file", đoạn code này khi mở file nếu nó không nằm trong thư mục có tên "link báo cáo" thì không có động tĩnh gì luôn ngược lại nếu nó nằm trong thư mục có tên "link báo cáo" thì nó sẽ sẽ tự động thực thi code với các tính năng sau:

Kiểm tra vòng ngoài:
1. Kiểm tra xem bản thân nó tên là gì có phải "nguồn.xlsm" ?
Nếu đúng khôg làm gì cả, hiện thông báo "OK,không cần phải làm gì thêm."

2.Nếu sai không phải tên là "nguồn.xlsm" mà là "ngày mai em đi.xlsm".. nhưng vì là bản thân các file này trong nó đã có code "Xuly_mo_file" nên nó sẽ hoạt động khi mở file:

Tiếp đến kiểm tra vòng trong mở với file có tên "ngày mai em đi.xlsm":
2.1 Kiểm tra xem các file đang mở có file nào tên là "nguồn.xlsm" không?
Nếu có đóng "nguồn.xlsm" lại và đổi tên file "nguồn.xlsm" sang thành một file có tên khác "chào em.xlsm" ,chỉ đóng duy nhất file "nguồn.xlsm" không đóng file khác nếu cùng mở.

2.2. Tự động đóng "ngày mai em đi.xlsm" và đổi sang tên "nguồn.xlsm"
2.3 Tự mở "nguồn.xlsm" sau khi đã đổi tên hiện thông báo "OK,không cần phải làm gì thêm."

Cháu giải thích vậy chú hiểu không chú?
Mong sớm nhận được tin của chú, ơ mà tối rồi nhà nhà đã bắt đầu tắt đèn đi ngủ, chú cũng đừng làm đêm nhé.
 
Upvote 0
Web KT

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

Back
Top Bottom