Đặt mật khẩu bảo vệ nhiều tệp Excel trong một thư mục và thư mục con để chỉ cho phép mở ở chế độ đọc.

Đặt mật khẩu bảo vệ nhiều tệp Excel trong một thư mục và thư mục con để chỉ cho phép mở ở chế độ đọc. Tôi cần đặt mật khẩu bảo vệ cho hơn 1000 tập tin Excel trong một thư mục và các thư mục con của nó. Tôi muốn các tập tin được mở ở chế độ chỉ đọc, chỉ có thể chỉnh sửa khi nhập mật khẩu. Mật khẩu được sử dụng sẽ là một mật khẩu duy nhất cho tất cả các tập tin. Xin hãy giúp đỡ.


Trả lời:

Một giải pháp như thế này có thể hiệu quả.

Bạn cần thay đổi hai hằng số ở đầu.

Const cstPass As String = "My 5ecret"
Const cstRoot As String = "D:\Temp"
Dim aFiles() As String, iFile As Integer

Sub ListAllFilesInDirectoryStructure()
iFile = 0
Liệt kê các tệp trong thư mục cstRoot và "\"
Xử lý tệp
End Sub

Sub ListFilesInDirectory(Directory As String)
Dim aDirs() As String, iDir As Integer, stFile As String

'Sử dụng hàm Dir để tìm các tệp và thư mục trong thư mục
' Tìm kiếm các thư mục và xây dựng một mảng riêng biệt cho chúng
Lưu ý rằng hàm Dir trả về cả tập tin lẫn thư mục khi chỉ định vbDirectory.
iDir = 0
stFile = Directory & Dir(Directory & "*.*", vbDirectory)
Thực hiện vòng lặp while stFile <> Directory
Nếu Right(stFile, 2) = "\." Hoặc Right(stFile, 3) = "\.." Thì
' Không làm gì cả - GetAttr không thích các thư mục này
ElseIf (GetAttr(stFile) And vbDirectory) = vbDirectory Then
' thêm vào mảng thư mục cục bộ
iDir = iDir + 1
ReDim Bảo toàn aDirs(1 tới iDir)
aDirs(iDir) = stFile
ElseIf InStr(LCase(stFile), ".xl")>0 Then ' bất kỳ tệp excel nào
' thêm vào mảng tệp toàn cục
iFile = iFile + 1
ReDim Preserve aFiles(1 To iFile)
aFiles(iFile) = stFile
Kết thúc nếu
stFile = Directory & Dir()
Vòng lặp

' Bây giờ, đối với bất kỳ thư mục nào trong aDirs, hãy gọi hàm self một cách đệ quy
Nếu iDir > 0 thì
Đối với iDir = 1 đến UBound(aDirs)
ListFilesInDirectory aDirs(iDir) & Application.PathSeparator
Thư mục tiếp theo
Kết thúc nếu
End Sub

Sub ProcessFiles()
Dim WB As Workbook
For iFile = 1 To UBound(aFiles)
Đặt WB = Workbooks.Open(aFiles(iFile))
WB.ReadOnlyRecommended = True
Application.DisplayAlerts = False ' Ngăn chặn hộp thoại ghi đè?
WB.SaveAs aFiles(iFile), WriteResPassword:=cstPass
Application.DisplayAlerts = True
WB.Close False
Kế tiếp
End Sub

Comments

Popular posts from this blog

Điều tôi muốn làm trong Excel 2010 là tạo một nút tùy chỉnh và gắn nó vào thanh công cụ Truy nhập nhanh và chạy một macro cụ thể.

Mở tài liệu Excel và Word từ Outlook Lỗi - Không đủ bộ nhớ

Excel 2016 - mở tất cả các tệp trong MỘT phiên bản