質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

443閲覧

パスワード自動付与で構文エラー

benkyo

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2020/02/16 09:10

エクセルVBAを利用してエクセルファイルに自動でパスワードを付与したいです。

パスワードを付与したいいくつかのエクセルファイルを格納したフォルダを用意

マクロを組んだsheet1のA列にファイル名 B列に付与したいパスワードを記入

マクロに下記を組む

Sub パスワード設定()

Application.ScreenUpdating = False

Dim filepath As String
Dim buf As String
Dim i As Long
Dim wb As Workbook

With Worksheets("Sheet1")

filepath = [パスワードを設定するファイルがある場所のパス]

buf = Dir(filepath &"*.xlsx")

Application.DisplayAlerts = False

Do While buf <>""Workbooks.Open (filepath &""&buf)
Set wb = Workbooks(buf)

For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If wb.Name Like ""&.Cells(i, 1).Value &""Then
ActiveWorkbook.SaveAs Filename:=filepath &""&buf, FileFormat:=xlOpenXMLWorkbook, _
Password:=WorksheetFunction.VLookup(.Cells(i, 1), .Range(.Cells(1, 1), .Cells(i, 2)), 2, False)
End If
Next i
Workbooks(buf).Close
buf = Dir()
Loop

End With
Application.DisplayAlerts = True

Application.ScreenUpdating = True
MsgBox "完了しました"End Sub

必ずDo Whileで構文エラーを吐きます、、、
どこがわるいのでしょうか?
助言頂ければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちはこんばんは。よろしくおねがいいたします。
これ、そんなに難しく考えなくていいですよ。A列にファイル名が書いてあって、そのすぐ右のセルには必ず指定のパスワードがあるわけですから、VLOOKUPする必要はないと思います。

こういうシートがあるとして、
イメージ説明

これのA列を、A2から順にナメていき、そのファイルを開き、このシートのすぐ右にある所定のパスワードで保存する、ということなら・・・

VBA

1Option Explicit 2 3Sub SaveAsNewPassword() 4 5  Dim myFileName As String 6  Dim MyNewPassword As String 7 8  Dim FilePath As String 9  FilePath = "C:¥temp¥myfolder¥" 10 11  Dim r As Range 12 13  '警告メッセージを出さなくさせる 14  Application.DisplayAlerts = False 15 16  For Each r In Range("A2", Range("A1").End(xlDown)) 17   'A列の情報がファイル名 18   myFileName = r.Value 19   'そのすぐ右隣りがパスワード 20   MyNewPassword = r.Offset(0, 1).Value 21 22   Workbooks.Open _ 23 Filename:=FilePath & myFileName 24 25   ActiveWorkbook.SaveAs _ 26   Filename:=FilePath & myFileName, _ 27   Password:=MyNewPassword 28 29   ActiveWorkbook.Close 30 31  Next r 32 33  '警告メッセージを元に戻す 34  Application.DisplayAlerts = True 35 36End Sub 37

これで私のほうで実験してみて、うまくいきました。
お役に立てれば・・・

投稿2020/02/16 11:49

AkiSaito

総合スコア110

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

benkyo

2020/02/16 12:20

さっさくのご回答ありがとうございます! 本当に申し訳ないのですがアプリケーションエラー アプリケーション定義または〜のエラーが出ます。 根本的なことになってすみません。 パスワードを設定してないエクセルファイルを数個用意して1つのフォルダに入れる。 エクセルを開きエクセルシート1にフォルダに入れたファイル名とパスワードを頂きました画像のように入れる。 フォルダパスを教えて頂きましたvbaのfilepathの部分に入れる。 実行する。 これであってますでしょうか?
AkiSaito

2020/02/16 12:48

"アプリケーション定義または..."ということは"1004"のエラーですね? この1004は、すごくざっくりしたエラーなんです。 どこかの文字が「たった1文字間違ってる」みたいな、すごく細かいところが間違っているんだと思います。辛抱強く探してみる必要があります。がんばってください。 で、準備の内容と、実行の方法は、あなたの理解で正しいです。 実験してみるときは、VBEでF8キーを押して、ステップ実行してみるといいです。 またなにかありましたら、ご遠慮なくお問い合わせください!
benkyo

2020/02/19 12:20

いろんなパターンで試してみましたが何故か同じエラーを吐き出します。ちょっと根本的な知識不足ですので一文一文理解できるように見直します!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問