2016-12-06 4 views
0

, если у меня есть таблица внизу в excel с разными именами файлов и ее пути. Как я могу назначить пароль для всех этих книг Excel? скажем для пути к файлу в ячейке B2 должен быть присвоен пароль в C2 путь к файлу в ячейке B3 должен быть присвоен пароль в С3 ... и т.д.Код VBA - назначьте разные пароли различным файлам

Excel file

я нашел большую часть кодов VBA доступных в основном связаны с назначением одного пароля для всего файла в той же папке, но я получил более 1000 файлов, которым нужно назначать разные пароли, мне также необходимо удалить все пароли позже. это можно сделать с помощью VBA?

Извините, что я абсолютно новичок в VBA, начинаю исследовать его из-за необходимости работы.

спасибо!

+1

Ваш VBA должен проходить через строки, открывать каждый файл, сохранять его с соответствующим паролем и, наконец, закрывать файл. Здесь нет ничего сложного. – FDavidov

+0

@FDavidov спасибо! я могу найти код для назначения одного пароля всем файлам в папку. но я не знаю, как изменить его, чтобы он соответствовал моему scanario. –

ответ

0

Объявляется две переменных один держать файл то время как другой - пароль.

Затем, вам нужно всего лишь один единственный цикл (а не два), в котором Вы должны были бы:

  1. Построить полное имя файла, который вы хотите установить пароль (на самом деле, у вас есть он в столбце в вашем примере),

  2. Получить пароль, который должен использоваться для этого файла (столбец C в вашем примере),

  3. Откройте файл, имя которого вы извлечены,

  4. SaveAs с паролем, который вы извлекли,

  5. Закрыть файл.

Петля должна выйти, как только полученное имя файла пуст.

Для этого описания может потребоваться комплекс, но я заверяю вас, что это очень просто. Просто дайте ему пару попыток, и вы испытаете удовлетворение от чего-то что-то собой.

Подсказка: редактор VB Excel позволяет вам установить точки останова, чтобы остановить выполнение и изучить значение переменных; это также поможет вам лучше понять, что вы делаете, и, если что-то не работает, быстро узнайте, что не так.

Последняя, ​​УДАЧА !!!!

+0

Большое спасибо! Ты прав! Я должен научиться самому создавать код! Завтра я посмотрю ваши советы и инструкции! (Сейчас полночь в моем городе!) –

+0

Желаю приятного отдыха, и вы просыпаетесь с новой энергией. Я уверен, что вы справитесь с этим, поскольку все, что вам нужно, уже находится в коде, который вы опубликовали. Кстати, если вы считаете, что мой опубликованный ответ помог вам, вы можете проголосовать за него и пометить его как ответ (нажмите «V» слева от ответа). Доброй ночи!!! – FDavidov

0

@FDavidov

благодарит за слово! я могу найти код для назначения одного пароля всем файлам в папку. но я не знаю, как изменить его, чтобы он соответствовал моему scanario. кто-нибудь может посоветовать, как я должен измениться? благодаря!!!

Public Sub addPassword() Dim FSO как объект папка Dim As Object, вложенная As Object Dim Всемирного банка как объект

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

+0

Должен ли я понять, что вы не только новичок в VBA, но и в программировании в целом? Причина наличия всех штрафов с одним и тем же паролем довольно понятна: вы выбираете пароль только один раз (3-я строка опубликованного кода) вместо того, чтобы делать это для каждого файла. Также обратите внимание, что код переходит к подпапкам (который, в соответствии с вашим примером, не относится к вашему случаю). – FDavidov

+0

@FDavidov да жаль, что я не владею английским языком, поэтому я не описал себя правильно ... я не новичок в VBA. На самом деле, я понятия не имел о VBA, только что начался сегодня. Я просто всю ночь искал в Google из-за моей рабочей потребности. Я знаю, что код, который я нашел, не может поместиться в этом сценарии, но я действительно не знаю, как его изменить, чтобы лучше соответствовать моему сценарию, –

+0

Я мог бы сделать код для вас, но тогда вы ничего не узнаете. Вместо этого я дам вам рекомендации в ответ, который я опубликую через несколько минут. Надеюсь, вы примете мой подход (поскольку, по крайней мере, это мое мнение), вы не только получите то, что хотите, но и узнаете, как это делается. – FDavidov

Смежные вопросы