Tự động đặt pass cho nhiều files excel

Liên hệ QC

bigbabol89

Thành viên thường trực
Tham gia
15/10/12
Bài viết
224
Được thích
34
Em chào các anh chị,
Em có 1 folder nhiều file excel khác nhau ( 500 files ), em muốn đặt pass cho mỗi file excel là 1 pass khác nhau.
Dữ liệu điều kiện đặt pass như sau :
- Cột A2 là tên file excel
- Cột B2 là pass excel tương ứng.
Mong các anh chị giúp đỡ em. Em cám ơn ạ.
Ps : Em không biết là dùng excel có đặt đc pass cho file pdf hay ko ? Nếu đặt đc cho file pdf thì mong các anh giúp em, nếu ko dc thì file excel cũng tốt lắm rồi ạ.
 
Bạn thử xem có ghi macro được đối với 1 file không: bật ghi macro, mở 1 file khác đặt password rồi đóng file đó. Nếu ghi được macro thì xử lý tiếp không khó.
 
Upvote 0
Em chào các anh chị,
Em có 1 folder nhiều file excel khác nhau ( 500 files ), em muốn đặt pass cho mỗi file excel là 1 pass khác nhau.
Dữ liệu điều kiện đặt pass như sau :
- Cột A2 là tên file excel
- Cột B2 là pass excel tương ứng.
Mong các anh chị giúp đỡ em. Em cám ơn ạ.
Ps : Em không biết là dùng excel có đặt đc pass cho file pdf hay ko ? Nếu đặt đc cho file pdf thì mong các anh giúp em, nếu ko dc thì file excel cũng tốt lắm rồi ạ.
Tranh thủ 15 phút nghỉ hiệp 1 viết code cho bạn.
Mã:
Sub Set_Pass()
Dim Item
With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = True
    .Filters.Add "Excel File", "*.xls*", 1
    If Not .Show = -1 Then
        MsgBox "Ban chua chon File", vbInformation, "----Mr.GPE----"
        Exit Sub
    End If
On Error Resume Next
Application.DisplayAlerts = False
For Each Item In .SelectedItems
    With Workbooks.Open(Item)
        .SaveAs Password:="GPE"  ', WriteResPassword:=""
        .Close
    End With
Next Item
Application.DisplayAlerts = True
End With
End Sub
 
Upvote 0
Tranh thủ 15 phút nghỉ hiệp 1 viết code cho bạn.
Mã:
Sub Set_Pass()
Dim Item
With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = True
    .Filters.Add "Excel File", "*.xls*", 1
    If Not .Show = -1 Then
        MsgBox "Ban chua chon File", vbInformation, "----Mr.GPE----"
        Exit Sub
    End If
On Error Resume Next
Application.DisplayAlerts = False
For Each Item In .SelectedItems
    With Workbooks.Open(Item)
        .SaveAs Password:="GPE"  ', WriteResPassword:=""
        .Close
    End With
Next Item
Application.DisplayAlerts = True
End With
End Sub
Anh ơi, hình như code này set duy nhất 1 pass là GPE thôi thì phải. Nhưng mà ý em là mỗi file là 1 pass khác nhau theo file data có sẵn có cấu trúc :
Cột A : Tên file
Cột B : Tên pass
....
Anh xem giúp em với. ( 2-0 rồi ^^ )
 
Upvote 0
Anh ơi, hình như code này set duy nhất 1 pass là GPE thôi thì phải. Nhưng mà ý em là mỗi file là 1 pass khác nhau theo file data có sẵn có cấu trúc :
Cột A : Tên file
Cột B : Tên pass
....
Anh xem giúp em với. ( 2-0 rồi ^^ )
Tốt nhất là có file mẫu thì sẽ tính tiếp còn nếu không có thì đợi các thành viên khác giúp bạn.
 
Upvote 0
Dạ đây anh ơi, em sorry.
 

File đính kèm

  • Datapass.xlsx
    29.7 KB · Đọc: 74
Upvote 0
Dạ đây anh ơi, em sorry.
Trước hết làm rõ 2 vấn đề.
Thứ nhất: File ở cột A nằm trong thư mục nào mới được chứ.
Thứ hai: Tên file không có phần mỡ rộng (.xls, .xlsx, .xlsm, .xlsb...) vậy lấy phần mỡ rộng là gid vậy?
 
Upvote 0
Trước hết làm rõ 2 vấn đề.
Thứ nhất: File ở cột A nằm trong thư mục nào mới được chứ.
Thứ hai: Tên file không có phần mỡ rộng (.xls, .xlsx, .xlsm, .xlsb...) vậy lấy phần mỡ rộng là gid vậy?
Em sorry, vì em cũng ko biết nhiều nên trình bay hơi dài dòng :
- File cột A : nằm ở ổ D, tên folder là “BCL”.
- Tên file là : xlsx
Thanks anh
 
Upvote 0
Em sorry, vì em cũng ko biết nhiều nên trình bay hơi dài dòng :
- File cột A : nằm ở ổ D, tên folder là “BCL”.
- Tên file là : xlsx
Cảm ơn anh
Bạn sửa code lại thế này.
Mã:
Sub Set_Pass()
Dim Arr(), i As Integer
On Error Resume Next
Arr = Sheet1.Range("A2:B" & Sheet1.Range("A65000").End(xlUp).Row).Value
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = 1 To UBound(Arr, 1)
    With Workbooks.Open("D:\BCL\" & Arr(i, 1) & ".xlsx")
        .SaveAs Filename:="D:\BCL\" & Arr(i, 1) & ".xlsx", Password:=Arr(i, 2)
        .Close
    End With
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Da dat xong mat khau", vbInformation, "---GPE---"
End Sub
 
Upvote 0
Bạn sửa code lại thế này.
Mã:
Sub Set_Pass()
Dim Arr(), i As Integer
On Error Resume Next
Arr = Sheet1.Range("A2:B" & Sheet1.Range("A65000").End(xlUp).Row).Value
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = 1 To UBound(Arr, 1)
    With Workbooks.Open("D:\BCL\" & Arr(i, 1) & ".xlsx")
        .SaveAs Filename:="D:\BCL\" & Arr(i, 1) & ".xlsx", Password:=Arr(i, 2)
        .Close
    End With
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Da dat xong mat khau", vbInformation, "---GPE---"
End Sub
Em cám ơn. Code dùng rất tốt ạ.
 
Upvote 0
Chào các anh chị,

Em có 1 file tổng hợp danh số bán hàng của các bạn salesman bán hàng từng tháng đạt được .

Làm thế nào để mỗi bạn nhận được file chỉ xem được mỗi thông tin của mình mà không thấy được thông tin của các bạn salesman khác nhưng chỉ có một file nguồn tổng em gưi thôi ạ.

Nghĩa là em cần nhiều password theo cho từng bạn salesman khi đăng nhập file tổng này

Mong các anh chị giúp em với ạ.

Em cảm ơn
 

File đính kèm

  • Example.xlsx
    42.3 KB · Đọc: 7
Upvote 0
Bạn sửa code lại thế này.
Mã:
Sub Set_Pass()
Dim Arr(), i As Integer
On Error Resume Next
Arr = Sheet1.Range("A2:B" & Sheet1.Range("A65000").End(xlUp).Row).Value
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = 1 To UBound(Arr, 1)
    With Workbooks.Open("D:\BCL\" & Arr(i, 1) & ".xlsx")
        .SaveAs Filename:="D:\BCL\" & Arr(i, 1) & ".xlsx", Password:=Arr(i, 2)
        .Close
    End With
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Da dat xong mat khau", vbInformation, "---GPE---"
End Sub

Anh ơi, chỉ em đặt pass tương tự cho file PDF với ạ
 
Upvote 0
Web KT
Back
Top Bottom