・VBAで読み取り専用で開く方法ってどうするんだろう
・パスワード付きファイルはVBAで開けるの
このような問題を解決できます。
結論、VBAで読み取り専用で開くことも可能ですし、パスワード付きのファイルも簡単に開くことが可能です。
今回はEXCELブックに限定しています。(テキストファイルやCSVは別と考えてください)
読み取り専用で開く(属性を付けたり)方法を2種類、パスワード付きのファイルの開き方も2種類紹介します。
・WorkbooksコレクションのOpenメソッドを使用する方法(ReadOnly)
・SetAttrステートメントを使用する方法
・WorkbooksコレクションのOpenメソッドを使用する方法
(Password)(WriteResPassword)
基本的なファイルの開き方は、こちらを見てください。
>>EXCEL VBAで「ファイル」を開く基本の方法(Openメソッド)
読み取り専用でファイルを開く方法
読み取り専用で開く(属性を付けたり)方法は大きく2種類紹介します。
Openメソッドを使用する方法(ReadOnly)
WorkbooksコレクションのOpenメソッドを使用します。
後ろに「ReadOnly:=True」をつけると読み取り専用で開くことできます。
実際のサンプルコードをご覧ください。
Sub SampleCode1() 'ファイルパスを変数に代入 ※文字が多くなるので省略したいからです FileSumple = "C:\Users\sumple\FileBOX\開く予定のファイル.xlsx" 'ファイルを開く Workbooks.Open Filename:=FileSumple, ReadOnly:=True End Sub
赤文字にしている文字が重要です。
でもとても簡単に読み取り専用でファイルをひらくことができます。
SetAttrステートメントを使用する方法
SetAttrステートメントを使用します。
あらかじめ読み取り専用の属性をつけますが「vbReadOnly」をつけることで可能です。
この方法は、先ほどのReadOnly:=Trueとは若干考え方が違い開く段階で読み取り専用にするのではなく、先に読み取り専用の属性を付けて、ファイルを開く方法となります。
実際のサンプルコードをご覧ください。
Sub SampleCode2() 'ファイルパスを変数に代入 ※文字が多くなるので省略したいからです FileSumple = "C:\Users\sumple\FileBOX\開く予定のファイル.xlsx" 'ファイルに読み取り専用の「属性」を付ける SetAttr FileSumple, vbReadOnly 'ファイルを開く Workbooks.Open Filename:=FileSumple End Sub
要するに元々読み取り専用ではないファイルを読み取り専用の属性を付けてから、ファイルを開くということになります。
パスワード付きのファイルを開く方法
通常パスワード付きのファイルを開く場合は、パスワードの入力を求められるダイアログが表示されます。
しかし、事前にパスワードを設定しておくことで、ダイアログを表示することなく素早く開くことができます。
ファイルにつけるパスワードは「読み取りパスワード」と「書き込みパスワード」があります。
読み取りパスワード付きのファイルを開く場合
WorkbooksコレクションのOpenメソッドを使用します。
後ろに「Password:=”○○○”」を使用することで、読み取りパスワードを入力した状態でファイルを開くことができます。
※○○○はパスワードが入ります。
実際のサンプルコードをご覧ください。
Sub SampleCode3() 'ファイルパスを変数に代入 FileSumple = "C:\Users\sumple\FileBOX\開く予定のファイル.xlsx" 'ファイルを開く Workbooks.Open Filename:=FileSumple, Password:=111 End Sub
特に難しいことはなく、Openメソッドの後ろに「Password:=~~」を入れるだけです。
ファイルを開く度にパスワードを入力していると時間もかかり非常に非効率です。
パスワードがわかっている状態で、管理する立場にあれば使用することも多いかもしれません。
書き込みパスワード付きのファイルを開く場合
こちらもWorkbooksコレクションのOpenメソッドを使用します。
後ろに「WriteResPassword:=”○○○”」を使用することで、書き込みパスワードを入力した状態でファイルを開くことができます。
※○○○はパスワードが入ります。
書き込みパスワードが設定されているファイルは、パスワードを入力しないと見ることはできても編集することができません。
実際のサンプルコードをご覧ください。
Sub SampleCode4() 'ファイルパスを変数に代入 FileSumple = "C:\Users\sumple\FileBOX\開く予定のファイル.xlsx" 'ファイルを開く Workbooks.Open Filename:=FileSumple, WriteResPassword:=111 End Sub
特に難しいことはなく、Openメソッドの後ろに「WriteResPassword:=~~」を入れるだけです。
まとめ
EXCEL VBAで【読み取り専用・パスワード付き】「ファイル」を開く方法を紹介しました。
ファイルを開く度にわざわざパスワードを入れたりすると、非常に時間も手間もかかります。
簡単に作業を自動化できるので、ぜひ試してみてください。
※私の場合は、コードを書くことは短いコードでもどのように書くと良いかわからなくなったりします。
このようにファイルを開くコード(短いコード)で、プログラムを作る練習をすることも一つの手です。
一緒にがんばりましょうね。
コメント