大事な情報が書き込まれているファイルはパスワードを設定しますね。
しかし、何のパスワードを設定したか忘れてしまっては困ります。
今回は、
ドラッグ&ドロップで
1.パスワードを自動生成
2. パスワードを設定してエクセルを保存
3.設定したパスワードを別のエクセルファイルに書き込んで保存
というスクリプトを紹介します。
Set objFSO = CreateObject("Scripting.FileSystemObject") 'パスワード保存用のエクセルファイル strOutputFilePath = "C:\Users\AKIKO\Desktop\簡単メール\パスワード.xlsx" 'パスワードの桁数 passKeta = 8 ' ドラッグアンドドロップされたファイルパスを取得 For Each strFilePath In WScript.Arguments ' パスワードを自動生成する関数 ' パスワードを自動生成 strPassword = GeneratePassword(passKeta) 'パスワードを生成 ' エクセルファイルを開く Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open(strFilePath) ' パスワードを設定して保存 objWorkbook.Password = strPassword objWorkbook.Save ' 別のエクセルにファイルパスとパスワードを保存 Set objOutputWorkbook = objExcel.Workbooks.Open(strOutputFilePath) Set objOutputWorksheet = objOutputWorkbook.Worksheets(1) ' 一番最後の行を取得 intLastRow = objOutputWorksheet.Cells(objOutputWorksheet.Rows.Count, 1).End(-4162).Row + 1 ' ファイルパスとパスワードを書き込む objOutputWorksheet.Cells(intLastRow, 1).Value = strFilePath objOutputWorksheet.Cells(intLastRow, 2).Value = strPassword ' ファイルを保存して閉じる objOutputWorkbook.Save objOutputWorkbook.Close objWorkbook.Close ' オブジェクトの参照を解放 Set objOutputWorksheet = Nothing Set objOutputWorkbook = Nothing Set objWorkbook = Nothing Set objExcel = Nothing Next Set objFSO = Nothing Set objShell = Nothing Function GeneratePassword(length) Const validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" Dim password, i Randomize password = "" For i = 1 To length password = password & Mid(validChars, Int((Len(validChars) * Rnd) + 1), 1) Next GeneratePassword = password End Function