2016-12-06 23 views
0

下記の表にExcelのファイル名とパスが異なる場合は、 どのようにしてこれらすべてのExcelブックにパスワードを割り当てることができますか? は、私は可能なVBAコードのほとんどを見つけVBAコード - 別のファイルに異なるパスワードを割り当てる

Excel file

等...セルB3におけるC2 ファイルパスにパスワードを割り当てる必要があるセルB2にファイルパスのために言うが、C3にパスワードを割り当てる必要がありましょう主に同じフォルダの下にあるすべてのファイルに1つのパスワードを割り当てることに関連していますが、1000を超えるファイルを別々のパスワードで割り当てる必要があるため、後ですべてのパスワードを削除する必要があります。それはVBAで行うことができますか?

申し訳ありません私はVBAに全く新しいです。作業の必要性のためにそれを探索してください。

ありがとうございました!

+1

VBAは行をループし、各ファイルを開き、対応するパスワードで保存し、最後にファイルを閉じます。ここにはあまりにも複雑なものはありません。 – FDavidov

+0

@FDavidovありがとう!私は、フォルダにすべてのファイルに1つのパスワードを割り当てるコードを見つけることができます。しかし私はそれを私のscanarioに合うように変える方法を知らない。 –

答えて

0

2つの変数を宣言しますEnd Subのもう一方のパスワード。

  1. は、あなたが実際には、あなたが持っている(パスワードを設定したいファイルの完全な名前をビルドします。

    次に、あなただけにあなたが必要と思われる中で1つのループ(とない2)が必要ですあなたの例の列B)でそれ、

  2. このファイルあなたの例では(列C)を使用する必要がありますパスワード、

  3. 開き名前を抽出したファイルを、取得

  4. 解凍したパスワードを保存します。

  5. ファイルを閉じます。

検索されたファイル名が空になるとすぐにループが終了するはずです。

この説明には複雑さが必要かもしれませんが、非常に簡単です。ちょうどそれにいくつかの試行を与え、あなたは自分で何かを構築する満足感を体験します。

ヒント:ExcelのVBエディタでは、ブレークポイントを設定して実行を停止し、変数の値を調べることができます。これはまた、あなたが何をしているのかをより良く理解するのに役立ち、何かがうまくいかない場合は、何が間違っているのかを素早く見つけ出します。

最後に、GOOD LUCK !!!!

+0

ありがとう!あなたが正しいです!自分でコードを作る方法を学ぶ必要があります!私はあなたのヒントと明日の指示を見ていきます! (今私の街の真夜中です!) –

+0

あなたは楽しい休息をして、あなたが新しいエネルギーで目を覚ますことを願います。あなたが必要とするのは、あなたが投稿したコードの中にすでにあるので、あなたはそれを管理すると確信しています。ちなみに、私の投稿された回答があなたを助けてくれたと思っているなら、あなたはそれを投票して答えにしたいかもしれません(答えの左側にある "V"をクリックしてください)。おやすみ!!! – FDavidov

0

@FDavidov

ありがとう!私は、フォルダにすべてのファイルに1つのパスワードを割り当てるコードを見つけることができます。しかし私はそれを私の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 

1は、ファイル名の中に保持するために

+0

あなたはVBAだけでなく、プログラミング全体として理解していますか?すべての罰金が同じパスワードである理由は非常に明確です。ファイルごとに行うのではなく、パスワードを1回だけ(取得したコードの3行目)取り出しています。また、コードはサブフォルダに移動することに注意してください(あなたの例によると、あなたのケースではありません)。 – FDavidov

+0

@FDavidovはい申し訳ありません英語以外のネイティブスピーカーがいるので、私は自分自身を正しく記述していませんでした...私はVBAの新人ではありません。実際には、私はVBAに手がかりを感じませんでした。私は、私の仕事の必要性のために、Googleで検索していました。私はこのシナリオに合っていないとわかったコードを知っていますが、自分のシナリオに合わせて変更する方法はわかりません。 –

+0

私はあなたのコードを作ることができましたが、何も学ばないでしょう。代わりに、私は数分で投稿する答えのガイドラインをあなたに教えてあげます。あなたが私のアプローチを受け入れることを望みます(少なくともこれは私の信じです)、あなたが望むものを得るだけでなく、これらのタイプのことが行われる方法も学びます。 – FDavidov

関連する問題