Tự động đặt pass hoặc xóa cho nhiều file words

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Em chào các anh chị,
Em có 1 folder chưa nhiều folder và các folder chứa nhiều file word khác nhau,
1. E muốn xóa Pass cho toàn bộ file word (các file word này em đều đặt chung một pass hoặc không có pass)
2. Em muốn đổi pass cho toàn bộ file word trên
Mong các anh chị giúp đỡ em. Em cám ơn ạ.

Bạn có thể sử dụng VBA trong Microsoft Word để thực hiện yêu cầu của bạn. Đây là một đoạn mã VBA có thể giúp bạn xóa mật khẩu hoặc thay đổi mật khẩu cho tất cả các tệp Word trong một thư mục:

Sub RemoveOrChangePassword()

Dim FileName As String
Dim FilePath As String
Dim Pass As String

' Thay đổi đường dẫn đến thư mục chứa các tệp Word của bạn
FilePath = "C:YourFilePath"

' Thay đổi mật khẩu (nếu cần)
Pass = "newpassword"

FileName = Dir(FilePath & "*.docx")

Do While FileName <> ""

Dim doc As Document
  Set doc = Documents.Open(FileName:=FilePath & "" & FileName, Password:="oldpassword")

' Xóa mật khẩu (nếu cần)
  If Pass = "" Then
    doc.RemovePassword
  Else
    doc.ChangePassword Pass
  End If

doc.Save
  doc.Close

FileName = Dir()
Loop

End Sub

Lưu ý: Chỗ "oldpassword" trong mã trên phải được thay bằng mật khẩu hiện tại của các tệp Word, và chỗ "newpassword" phải được thay bằng mật khẩu mới mà bạn muốn đặt cho tất cả các tệp.
(nguồn từ GPT)

không được đâu bác ạ
em thử toán báo lỗi như ảnh

3040

Thông báo lỗi "Không tìm thấy đối số được đặt tên" gợi ý rằng mã đang cố sử dụng một đối số được đặt tên (ví dụ: "FileName:=") theo cách không được hỗ trợ bởi hàm được gọi (trong trường hợp này là Documents.Open).

Một giải pháp khả thi là loại bỏ cú pháp đối số đã đặt tên và chỉ chuyển (các) đối số được yêu cầu theo đúng thứ tự, như sau:

Set doc = Documents.Open(FilePath & "" & FileName, Password:="oldpassword")

code của GPT này không dùng được bác ạ toàn báo lỗi như trên 🙂

Code trong Excel vẫn được. Dù sao dùng Excel điều khiển vẫn tiện hơn.

Bác hướng dẫn em với ạ
Em vẫn chưa làm được ạ

Các lệnh doc.RemovePassword và doc.ChangePassword Pass ở bài #2 không chạy được rồi. Tôi đã tìm được lệnh thay thế cho doc.ChangePassword Pass nhưng không biết lệnh nào để xóa (Remove) password. Tôi GG hoài nhưng hổng xài thành công. Có ai biết không nhỉ?

Bác tham khảo bài viết này xem ạ. Em cũng đang đọc ạ
www.giaiphapexcel.com/diendan/threads/t%E1%BB%B1-%C4%91%E1%BB%99ng-%C4%91%E1%BA%B7t-pass-cho-nhi%E1%BB%81u-file-words-theo-list-excel.139999/

Em chào các anh chị,
Em có 1 folder nhiều file word khác nhau, em muốn đặt pass cho mỗi file word là 1 pass khác nhau theo list excel cho sẵn.
Dữ liệu điều kiện đặt pass như sau :
– Cột A2 là tên file Word
– Cột B2 là pass tương ứng.
Mong các anh chị giúp đỡ em. Em cám ơn ạ.

Lưu ý:
1. Do bạn chỉ nhập tên các tập tin Word vào cột A nên phải đặt các tập tin đó trong cùng thư mục với tập tin Excel, ngược lại thì code không biết tìm chúng ở đâu.

2. Không chỉ nhập tên mà còn phải nhập định dạng nữa. Tức không 651233 mà phải là vd. 651233.docx.

Code có thể tự thêm định dạng, vd. docx nhưng lúc đó tất cả các tập tin đều phải có định dạng docx, tức bạn không thêm được mật khẩu cho các tập tin vd. docm.

Vậy hãy nhập vào cột A tên cùng với định dạng.

Trong Excel -> mở tập tin DATA.xlsx -> lưu lại thành DATA.xlsm -> Alt + F11 -> menu Insert -> Module -> dán code sau vào Module -> lưu lại tập tin.

Khi cần thêm mật khẩu thì nhập dữ liệu vào cột A và B rồi chạy Sub SetPass

Sub SetPass()
Dim lastRow As Long, r As Long, filename As String, data(), fso As Object, wordApp As Object, doc As Object
'    xac dinh vung du lieu va nhap vao mang data
    With ThisWorkbook.Worksheets("Sheet1")
        lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
        If lastRow = 1 Then Exit Sub
        data = .Range("A2:B" & lastRow).Value
    End With
    Set fso = CreateObject("Scripting.FileSystemObject")
'    khoi dong server WORD
    Set wordApp = CreateObject("Word.Application")
'    wordApp.Visible = True
'    duyet tung dong du lieu
    For r = 1 To UBound(data)
'        ten tap tin word
        filename = ThisWorkbook.Path & "" & data(r, 1)
        If fso.FileExists(filename) Then
'            tap tin word ton tai, mo tap tin trong WORD
            Set doc = wordApp.documents.Open(filename)
'            thiet lap mat khau
            doc.Password = data(r, 2)
'            dong tap tin
            doc.Close
        End If
    Next
    Set fso = Nothing
    wordApp.Quit
    Set wordApp = Nothing
End Sub

www.giaiphapexcel.com/diendan/threads/t%E1%BB%B1-%C4%91%E1%BB%99ng-%C4%91%E1%BA%B7t-pass-ho%E1%BA%B7c-x%C3%B3a-cho-nhi%E1%BB%81u-file-words.163967/

Ứng dụng AI và Chat GPT trong Quản trị nhân sự
Khóa học SprinGO phù hợp

Ứng dụng AI và Chat GPT trong Quản trị nhân sự

Học xong khóa này, học viên có thể: Hiểu đúng bản chất AI, các nhóm AI phổ biến và cách AI “hoạt động” ở...

Xem khóa học
★★★★★ 5 ★ 1 👤 1 ▥ 0
Quảng cáo

Bạn nên đọc

One Response

  1. hands says:

    không biết lệnh nào để xóa (Remove) password. Tôi GG hoài nhưng hổng xài thành công. Có ai biết không nhỉ?

    Mở file rồi lưu mới đè file ban đầu với password rỗng
    Đã thử lưu đè tên cũ với pass rỗng nhưng không thành công, file vẫn giữ nguyên pass. Tôi tạm xử lý bằng cách Save As với tên mới và pass rỗng, rồi Save As lần nữa với tên cũ.

    Em chào các anh chị,
    Em có 1 folder chưa nhiều folder và các folder chứa nhiều file word khác nhau,
    1. E muốn xóa Pass cho toàn bộ file word (các file word này em đều đặt chung một pass hoặc không có pass)
    2. Em muốn đổi pass cho toàn bộ file word trên
    Mong các anh chị giúp đỡ em. Em cám ơn ạ.

    Bạn thử chạy code trong file xem.

    E cảm ơn, code đã hoạt động tốt rồi ạ.
    Chỗ đặt mật khẩu cũ mình có thể tạo textbox để nhập mật khẩu cũ và mật khẩu mới vào được không ạ
    E cảm ơn

    Bạn tìm hiểu thêm 1 chút rồi tự thêm vào đi. Tôi nghĩ chắc không vấn đề gì.

    E đã làm được, cảm ơn bác nhiều 🙂

    Đây là lối làm việc của tin tặc.
    1. Nhét code vào một file nào đó, ngươi dùng tải về, mở ra, code tự đọng chạy và khóa mọt mớ files trong một mớ folders.
    2. Đòi tiền chuộc.
    Thường thường mấy thằng làm chuyện này là cách để lấy điểm với sêp. Lén tự pha sheej thống, đợi đến lúc mọi người tán loạn leennheets mới "giữa đường thấy chuyện bất bình chảng tha".

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm