• ベストアンサー

VBScriptでエクセル VBProject

VBScript から,エクセルファイルを 連続で開いて操作するプログラムを作成しています. プログラムの中で,開いたエクセルファイルのVBProjectがロックされているかを判別 したいのですが,方法はありますでしょうか. VBAでは, .VBProject.Protection が使用可能なのですが,VBSで使用するとエラーになります. ご回答よろしくお願いいたします.

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

VBAで取得出来てるのなら同様にすれば・・・ dim oXL ,i set oXL =createobject("excel.application") oXL.workbooks.open "E:\tmp\マクロあり.xls" With oXL.VBE.VBProjects.Item("VBAProject") With oXL.VBE.ActiveVBProject For i = 1 To .VBComponents.Count wscript.echo .VBComponents(i).Name & " ぷろてくと=" & .Protection Next End With End With てな具合に。

masa_3298g
質問者

お礼

ご回答ありがとうございます. .VBComponents.Count と .VBComponents(i).Name で,エラーになってしまいましたが, .Protection は,正常に動きました. 求めていた回答を頂き,ありがとうございました.

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

> .VBProject.Protection が使用可能なのですが,VBSで使用するとエラーになります. こんにちは If .VBProject.Protection = vbext_pp_locked Then でエラーになったのでしょうね vbext_pp_locked は、そのままでは使えませんので Const vbext_pp_locked = 1 If .VBProject.Protection = vbext_pp_locked Then MsgBox .Name & "は、保護されています。" Else MsgBox .Name & "は、保護されていません。" End If と値を登録してやれば良いでしょう

masa_3298g
質問者

お礼

ご回答有難うございます. vbext_pp_locked は,使ってません. .VBProject.Protection ではなく, .VBE.ActiveVBProject.Protection としたら,エラーがなくなりました.