【问题标题】:Assign different passwords to different files为不同的文件分配不同的密码
【发布时间】:2017-04-21 09:40:21
【问题描述】:

我在 Excel 中有下表,其中包含不同的文件名及其路径。
如何为所有这些 Excel 工作簿分配密码?

假设单元格 B2 中的文件路径应在 C2 中分配密码 单元格 B3 中的文件路径应在 C3... 等中分配密码。

Excel文件

我发现 VBA 代码可以为同一文件夹下的所有文件分配一个密码,但是需要为 1000 多个文件分配不同的密码。我还需要稍后删除所有密码。

【问题讨论】:

  • 你的 VBA 应该遍历行,打开每个文件,用相应的密码保存,最后关闭文件。这里没有什么太复杂的地方。
  • @FDavidov 谢谢!我可以找到一个代码来为文件夹中的所有文件分配一个密码。但我不知道如何更改它以适合我的扫描仪。

标签: excel vba passwords


【解决方案1】:

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

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

  1. 构建你要设置密码的文件全名(其实你例子的B列里就有),

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

  3. 打开你解压的文件,

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

  5. 关闭文件。

只要检索到的文件名为空,循环就会退出。

此描述可能需要复杂,但我向您保证它非常简单。只需尝试几次,您就会体验到自己构建东西的满足感。

提示:Excel 的 VB 编辑器使您能够设置断点以停止执行并检查变量的值;这也将帮助您更好地了解自己在做什么,如果出现问题,请快速找出问题所在。

【讨论】:

  • 非常感谢!!你说的对!我应该学习如何自己编写代码!明天我会看看你的提示和指导! (现在是我所在城市的午夜!)
  • 祝您休息愉快,醒来时精力充沛。我相信你会管理它,因为你所需要的已经在你发布的代码中了。顺便说一句,如果您认为我发布的答案对您有所帮助,您可能希望对其进行投票并将其标记为答案(单击答案左侧的“V”)。晚安!!!
【解决方案2】:

@FDavidov

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

Public Sub addPassword() 将 FSO 调暗为对象 将文件夹作为对象,子文件夹作为对象 将 wb 作为对象调暗

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

结束子

【讨论】:

  • 我应该明白你不仅是 VBA 的新手,而且是整个编程的新手吗?使用相同密码进行所有罚款的原因很清楚:您只获取一次密码(已发布代码的第 3 行),而不是为每个文件执行此操作。另请注意,代码转到子文件夹(根据您的示例,这不是您的情况)。
  • @FDavidov 是的,对不起,我是一个非英语母语人士,所以我没有正确描述自己……我对 VBA 并不陌生。实际上,我对VBA一无所知,今天才开始。由于工作需要,我花了一整夜在谷歌上搜索。我知道我发现的代码不适合这种情况,但我真的不知道如何更改它以更好地适应我的情况,
  • 我可以为您编写代码,但您将学不到任何东西。相反,我会在几分钟后发布的答案中为您提供指导。希望你接受我的方法(因为,至少这是我相信的),你不仅会得到你想要的东西,而且会了解这些事情是如何完成的。
猜你喜欢
  • 2021-07-15
  • 2019-08-26
  • 2012-03-11
  • 2012-05-12
  • 1970-01-01
  • 2020-10-19
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多