- ベストアンサー
VBAのエラー:438
VBA初心者ですが、宜しくお願いします。 ver:Office 2000 新しいパスワードをつけるマクロを実行すると「実行時エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません」となります。 ソースはここです↓ ActiveWorkbook.Password = "TEST" ほかの端末(office2003)では実行できるのに何故でしょうか
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Excel2002以降は保存時とパスワードのみの設定の2通りの設定方法があるようですが、Excel2000では保存時にしかパスワードが設定できないようです。 そのため ActiveWorkbook.Password = "TEST" は2000ではエラーになるようです。 2000の場合は、例えば ActiveWorkbook.SaveAs Filename:="C:\Book1.xls", Password:="TEST" とすれば設定できるようです。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
WEBを照会すると http://www.kotaete-net.net/Default.aspx?pgid=14&qid=180591363095 という、同じ質問が出ている。バージョンも2000の場合らしい。 回答は十分納得できないが、(ありえないと思うが)ひょっとすると2000が? 2002ではうまく行くようです。
お礼
imogasi様ご回答ありがとうございます。 リンクを参照させていただきましたら 同じ現象のようです。。。 リンク先の回答もいまいちでしたので このソース(ActiveWorkbook.Protect Password:=NewPassword)を 下記のように変えてみました。 ActiveWorkbook.SaveAs Filename:= _ myFilename, FileFormat:= _ xlNormal, Password:=NewPassword, WriteResPassword:="", ReadOnlyRecommended _ :=False, CreateBackup:=False ActiveWorkbook.Save Application.DisplayAlerts = False 'メッセージを出さない ActiveWorkbook.Close myFilename = Dir() 少し長くなってしまいましたが、やりたいことができました。 ありがとうございました。
- myRange
- ベストアンサー率71% (339/472)
>ソースはここです↓ >ActiveWorkbook.Password = "TEST" >ほかの端末(office2003)では実行できるのに何故でしょうか それは勘違いでしょう。 2000でも同じで、Passwordというメソッドはありません。 PasswordはProtectメッソドの引数のひとつです。 で、以下のように。 ActiveWorkbook.Protect Password:="TEST"
お礼
myRange様 ご回答ありがとうございます。 しかし、なぜか新しいパスワードの"TEST"になりませんでした。 もう少しひねってみます
お礼
hotosys様ご回答ありがとうございます imogasi様に返信したあとにhotosys様のほうを実行してみたら 同じようにできました! ごめんなさい、見逃しておりました。 上のソースより短くできるhotosys様のほうを採用させていただきます。 ご教授ありがとうございました。