vba Private sub Workbook_open()で質問です。

vba Private sub Workbook_open()で質問です。 Excel 2013を使用しています。 マクロのファイルを開くと保護ビューが表示されて「編集を有効にする」を押すと 通常なら使用できる状態になるかと思いますが、デバックがでてしまいます。 エラー内容 実行時エラー1004 Worksheetクラスのactivateメソッドが失敗しました。 プログラム Private sub Workbook_open() Thisworkbook.sheets("○○").Activate ←エラー箇所 With Thiswobook.sheets("○○") セルの内容をクリア End With End Sub エラーがでたときには、保護ビューのシートと保護されていない同じシートがでてきます。 終了を押すと保護ビューのシートが消えて通常通り使えますが、これの原因は何でしょうか?

Visual Basic201閲覧

ベストアンサー

0

回答します。 > 実行時エラー1004 > Worksheetクラスのactivateメソッドが失敗しました。 →マクロの設定にて「デジタル署名されたマクロを除き、すべてのマクロを無効にする」、もしくは「すべてのマクロを有効にする」にチェックが入っていませんか? この状態にしておくと、保護ビューの解除を行った瞬間にWorkbook_Openイベントが発生するのですが、この段階では保護ビューは解除されていない状態で実行されてしまいますので、保護ビュー用のWorkbook、Worksheetなどのコレクションしか使用できません。 従って、対処方法として2つありますので、こちらで対応してみてください。 1つ目:マクロの設定を「警告を表示してすべてのマクロを無効にする」に変更 →ブックを開くと、保護ビューの確認の後に、コンテンツの有効化の確認が表示されるようになります。 保護ビューを解除した後、コンテンツの有効化(マクロの有効)が行われるので、プログラムを修正せずとも正常に動作するはずです。 プログラムを修正せずに、正常に動作させたいのであれば、この設定が推奨設定になります。 2つ目:プログラムを修正する <Before> Thisworkbook.sheets("○○").Activate <After> Application.ProtectedViewWindows(1).Workbook.Activate →インデックス番号はご自身で修正してください。 また、セルのクリア処理の記述がありましたが、そちらも修正が必要になるかもしれません。

その他の回答(2件)

0

Thisworkbook.sheets("○○").Activate の前に以下の処理を追加してみてください。 Thisworkbook.Activate

0

その”〇〇”という名前のシートが存在していない場合にエラーになります シートの名前は、自由に変更したり、 シートを削除もできるので、 そのような状況になったのではないかと推測されます どのように修正したいのか、わかりませんが、 元の状態に戻すなら、〇〇の名前のシートを元に戻してあげてください

ありがとうございます。"○○" というシートが存在はしているのですが、なぜがエラーがでてしまい、 終了を押すと何事もなかったのように解決がしますが、なぜそのようなエラーがでるのかが知りたいです。 修正点としましては、マクロを開いたときに、保護ビュー→編集を有効にするを押したら保護ビューを解除して通常通りに使えるようにしたいです。 説明がわかりづらくてすみません。