作業を効率化させるExcel VBA Tips集

作業を楽にする為の苦労を惜しまない、本末転倒なプログラマーが実際に業務で使ったExcel VBAのサンプルを公開しています。掲載しているサンプルは関数単位ですので、部品化しやすいと思います。


ファイルを読み取り専用に設定する

このVBA単品では作業の効率化は行えないかも知れませんが、
他のVBAと組み合わせることで、効率化が図れると思います。
その組み合わせ例については、次回に。

今回紹介するVBAは保存されているファイルを読み取り専用に設定する方法です。

VBAで行う場合、FileSystemObjectを使います。


'--------------------------------------------------------------------
' 関数名 : SetReadOnly
' 機能   : ファイルを読み取り専用に設定する
' 引数   : フルパス
' 戻り値 : なし
' 作成日 : 2008/03/29
' 作成者 : lily(http://vbatips.blog37.fc2.com/)
'--------------------------------------------------------------------
Sub SetReadOnly(sPath As String)
Dim fso As FileSystemObject

    'ファイルシステムオブジェクト生成
    Set fso = New FileSystemObject
    
    '読み取り専用に設定
    fso.GetFile(sPath).Attributes = ReadOnly

    Set fso = Nothing
End Sub
fso.GetFile(sPath).Attributesの行でファイルの属性を設定しています。読み取り専用以外にも以下の属性が設定できます。

Normal : 標準ファイル
ReadOnly : 読み取り専用ファイル
Hidden : 隠しファイル
System : システムファイル
Archive : アーカイブファイル


また、複数設定したい場合は、属性を加算することで可能です。以下に記述例を示します。
    '読み取り専用と隠しファイルの設定
    fso.GetFile(sPath).Attributes = ReadOnly + Hidden

念のため、呼び出し元の記述例を以下に掲載します。

Sub TestSetReadOnly()

    Call SetReadOnly("E:\test\Book1.xls")

End Sub
下図は上記VBAで、読み取り専用と隠しファイルを設定した場合のプロパティです。
属性それぞれに、チェックが付いています。

実行後のプロパティ


【関連記事】
作業を効率化させるExcel VBA Tips集 FileSystemObject使用中に「ユーザ定義型は定義されていません。」と表示された場合

コメント

コメントの投稿


管理者にだけ表示を許可する

無料ホームページ アフィリエイト レンタルサーバー FC2ブログ