• ベストアンサー

エクセルVBAでブックを開くとマクロを実行するようにしたいのですが

ブックを開くと同時に開いたシートを保護するようにしたいのですがうまくいきません。通常(?)ボタンを作っておいて押すと実行すると思うのですが、そうせずにブックを開くと実行するようにならないかと思っています。保護をするコードはわかるのですが、どこにそれを書き込んだらいいのかもわかりません。VBAプロジェクトを見るとSheet1,Sheet2,ThisWorkbook,UserForm1とありますが、そのうちのどこかに置くのでしょうか?

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

  • ベストアンサー
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

ThisWorkbookをWクリック ↓ (General)をクリック ↓ Workbookを選択 ↓ Private Sub Workbook_Open() 'ここに記述 End Sub ↓ ブックを上書き保存して閉じる これで次回起動時からマクロが 自動で実行されます。 あるいは、 挿入 ↓ 標準モジュール ↓ ウィンドウ内に Sub Auto_Open '記述 End Sub ↓ ブックを上書き保存して閉じる 以下同じです。

wait4u
質問者

お礼

marbinさんありがとうございます。早速試してみました。最初からブックを開きやってみました。一回目はうまく保護できました。もう一度試そうとしたところ保護できませんでした。見てみるとGeneralに戻ってしまっていました。それでまたWorkbookに戻してみて試しましたが、それからはうまく動作しなくなりました。どうしてでしょうか?

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >ブックを開くと同時に開いたシートを保護するようにしたいのですがうまくいきません。 & >一回目はうまく保護できました。もう一度試そうとしたところ保護できませんでした。見てみるとGeneralに戻ってしまっていました。 ブックを開いてシートを保護する、というコードには、論理矛盾があるようですね。 例: '<ThisWorkbook モジュール> Private Sub Workbook_Open()   With Me.Worksheets("sheet1")    .Protect Password:="abc"   End With End Sub うまくいかないようでしたら、コードを公開してください。

wait4u
質問者

お礼

ご回答ありがとうございました。すみません、勘違いをしてました。よくよくセルに文字をシートから直接記入しようとしたところちゃんと保護されていました。おっちょこちょいで済みません。。。

関連するQ&A