VBA代码 - 为不同的文件分配不同的密码

时间:2016-12-06 16:51:13

标签: excel vba passwords

如果我在excel中有以下表格,其中包含不同的文件名及其路径。 如何为所有excel工作簿分配密码? 假设在Cell C2中的文件路径应该在C2中分配密码 单元格B3中的文件路径应在C3 ...等中分配密码

Excel file

我发现大多数可用的VBA代码主要与为同一文件夹下的所有文件分配一个单独的密码有关,但是我需要为1000多个文件分配不同的密码,我还需要删除所有密码后来。它可以由VBA完成吗?

对不起,我是VBA的新手,因工作需要而开始探索它。

谢谢!

2 个答案:

答案 0 :(得分:0)

@FDavidov

谢谢!我可以找到一个代码,将所有文件中的一个密码分配到该文件夹​​中。但我不知道如何改变它以适应我的scanario。任何人都可以建议我应该如何改变?谢谢!!!

Public Sub addPassword()     昏暗的FSO作为对象     Dim文件夹As Object,子文件夹As Object     Dim wb As Object

Set FSO = CreateObject("Scripting.FileSystemObject")
folderPath = ActiveSheet.Range("C2").Value
pwd = ActiveSheet.Range("C3").Value
Set folder = FSO.GetFolder(folderPath)

With Application
    .DisplayAlerts = False
    .ScreenUpdating = False
    .EnableEvents = False
    .AskToUpdateLinks = False
End With

For Each wb In folder.Files
    If Right(wb.Name, 3) = "xls" Or Right(wb.Name, 4) = "xlsx" Or Right(wb.Name, 4) = "xlsm" Then
        Set masterWB = Workbooks.Open(wb)
        ActiveWorkbook.SaveAs Filename:=Application.ActiveWorkbook.FullName, Password:=pwd
        ActiveWorkbook.Close True
    End If
Next
For Each subfolder In folder.SubFolders
    For Each wb In subfolder.Files
        If Right(wb.Name, 3) = "xls" Or Right(wb.Name, 4) = "xlsx" Or Right(wb.Name, 4) = "xlsm" Then
            Set masterWB = Workbooks.Open(wb)
            ActiveWorkbook.SaveAs Filename:=Application.ActiveWorkbook.FullName, Password:=pwd
            ActiveWorkbook.Close True
        End If
    Next
Next
With Application
    .DisplayAlerts = True
    .ScreenUpdating = True
    .EnableEvents = True
    .AskToUpdateLinks = True
End With

End Sub

答案 1 :(得分:0)

声明两个变量一个用于保存文件名而另一个用于保存密码。

然后,您只需要一个循环(而不是两个):

  1. 构建您要设置密码的文件的全名(事实上,您可以在示例的B列中找到它),

  2. 获取需要用于此文件的密码(示例中的C列),

  3. 打开您提取名称的文件

  4. 使用您提取的密码保存,

  5. 关闭文件。

  6. 一旦检索到的文件名为空,循环就会退出。

    这种描述可能需要复杂,但我保证这很简单。只要尝试一下,您就会体验到自己构建一些东西的满足感。

    提示:Excel的VB编辑器允许您设置断点以暂停执行并检查变量的值;这也将帮助您更好地了解您正在做的事情,如果某些事情无效,请快速找出问题所在。

    最后,好运!!!!