• ベストアンサー

VBAのエラー:438

VBA初心者ですが、宜しくお願いします。 ver:Office 2000 新しいパスワードをつけるマクロを実行すると「実行時エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません」となります。 ソースはここです↓ ActiveWorkbook.Password = "TEST" ほかの端末(office2003)では実行できるのに何故でしょうか

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

  • ベストアンサー
  • hotosys
  • ベストアンサー率67% (97/143)
回答No.1

Excel2002以降は保存時とパスワードのみの設定の2通りの設定方法があるようですが、Excel2000では保存時にしかパスワードが設定できないようです。 そのため ActiveWorkbook.Password = "TEST" は2000ではエラーになるようです。 2000の場合は、例えば ActiveWorkbook.SaveAs Filename:="C:\Book1.xls", Password:="TEST" とすれば設定できるようです。

testAdmin
質問者

お礼

hotosys様ご回答ありがとうございます imogasi様に返信したあとにhotosys様のほうを実行してみたら 同じようにできました! ごめんなさい、見逃しておりました。 上のソースより短くできるhotosys様のほうを採用させていただきます。 ご教授ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

WEBを照会すると http://www.kotaete-net.net/Default.aspx?pgid=14&qid=180591363095 という、同じ質問が出ている。バージョンも2000の場合らしい。 回答は十分納得できないが、(ありえないと思うが)ひょっとすると2000が? 2002ではうまく行くようです。

testAdmin
質問者

お礼

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)
回答No.2

>ソースはここです↓ >ActiveWorkbook.Password = "TEST" >ほかの端末(office2003)では実行できるのに何故でしょうか それは勘違いでしょう。 2000でも同じで、Passwordというメソッドはありません。 PasswordはProtectメッソドの引数のひとつです。 で、以下のように。 ActiveWorkbook.Protect Password:="TEST"   

testAdmin
質問者

お礼

myRange様 ご回答ありがとうございます。 しかし、なぜか新しいパスワードの"TEST"になりませんでした。 もう少しひねってみます

関連するQ&A