このページではエクセルVBAを使って、指定フォルダ内にあるすべてのブックを一括で読み取り専用ファイルに変更する方法をご紹介していきます。
ひとつひとつ作業していたら膨大な時間がかかると思いますので、ぜひ以降で紹介するVBAコードをサクッと実行して終わらせましょう。
それではさっそくやっていきましょう!
※VBAを使ったことがない、という方はまずは以下からご覧ください。
VBA上で指定ファイルを読み取り専用にする方法
まずはVBA上で指定ファイルを読み取り専用にする方法からご紹介していきます。
以下がその実行方法です。
たったこれだけでOKです。
フォルダ内ファイルに一括実行する場合は、この処理をフォルダ内のすべてのファイルに対して実行してあげればOKですね。
というわけで次はフォルダ内のファイル名を順番に取得する方法をご紹介していきます。
指定フォルダ内のファイル名を取得する方法
指定フォルダ内のファイル名を取得するにはVBA上に備わっているDir関数というものを使います。
Dir関数の使用方法は以下の通りです。
これでフォルダ内の先頭にあるファイル名を取得できます。
もし2つ目以降のファイル名を引き続き取得したい場合は、
で取得できます。
このあたりの処理については以下の記事で詳細解説していますので、興味があればこちらもご覧ください。
いずれにせよ、今回やりたいフォルダ内のファイルをすべて一括で読み取り専用にするには、先ほど紹介したSetAttrとここで紹介したDir関数を組み合わせて実行していきます。
フォルダ内ブックを一括で読み取り専用にするサンプルコード
それでは本題であるフォルダ内のファイルをすべて一括で読み取り専用にする方法をご紹介します。
以下がそのサンプルコードです。
あなたがやることは3行目のベースフォルダのフルパスを指定するだけでOKです。
Sub setattr_test()
Dim base_path As String, file_name As String
base_path = "C:\Users\Desktop\test\test_folder"
file_name = Dir(base_path & "\", vbNormal)
Do Until file_name = ""
SetAttr base_path & "\" & file_name, vbReadOnly
file_name = Dir()
Loop
End Sub
コードの流れとしては、
⓪3行目でベースとなるフォルダのフルパスを指定
①4行目と7行目でDir関数を使用してファイル名を取得
②6行目のSetAttrで①で取得したファイルを読み取り専用に
③①と②をすべてのファイルに対して繰り返す
ということを行っているだけです。
サンプルコードの実行結果確認
それでは最後にさきほどのサンプルコードを実行してみましょう。
まずは実行前のファイルをひとつ開いてみましょう。
以下のように実行前は普通のブックであることが確認できます。
それでは先ほどのマクロを実行してみます。
実行後に同じファイルを開いてみましょう。
問題なく読み取り専用に変更されていますね。
(他のファイルも確認してみましたが、問題なく読み取り専用になっていました。)
おわりに
というわけで今回は、エクセルVBAをつかって指定フォルダ内にあるすべてのファイルを一括で読み取り専用に変更する方法をご紹介しました。
業務の効率化にぜひご活用ください。
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント