便利コード気ままに備忘録
紹介するコードを使用した状況
・あるエクセルファイルを社内やチームで読み取り専用で共有している
・私はそのファイルの管理人で毎日更新する必要がある
・毎日の更新はVBAとVBSを使用して自働化できる
・しかし、読み取り専用の設定があるのでマクロで上書き等を行うと別ファイルで保存されてしまう
こういった状況を下記コードで解消しました。
Dim Obj
Dim fs
Dim fn
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set fn = fs.GetFile("対象のエクセルファイルのパス")
fn.attributes = 0
Set Obj = WScript.CreateObject("Excel.Application")
Set Path = CreateObject("Scripting.FileSystemObject").GetFolder(".")
Obj.Visible = True
CreateObject("WScript.Shell").AppActivate Obj.Caption
Obj.Workbooks.Open Path & "\エクセルファイル名.xlsm"
Obj.Application.Run "実行したいマクロ名"(マクロ側でエクセルを閉じるコードまで記載している。)
fn.attributes = 1
fn.attributes = 0
から
fn.attributes = 1
の間が、対象のエクセルファイルを実行するよう指示するようになっていて、エクセルファイル側のVBAでエクセルファイルを保存して閉じるところまで実行するようにしています。
で、最初に
attributes = 0
で読み取り専用を解除して
attributes = 1
で読み取り専用を再設定するようにしました。
これで、共有している読み取り専用のエクセルファイルを
読み取り専用のまま自動で更新できるようになりました。
#バッチファイル
コメント