Excelについて教えて頂きたいことがあります。
シート名でマクロを組んでいるので、誤ってシートを消されてしまうとエラーになってしまいます。
但し、外部データ取り込む為に、一時的にシートを挿入し、既存のシートにデータを転記し終わったら挿入したシートを削除するという機能が必要であるため、ブックの保護が出来ません。
ブックの保護をして、上記部データ取り込みのマクロを実行したらやはりエラーになってしまいました。
ブックの保護ではなく、特定のシートのみ削除を禁止する方法をご存知の方がいらっしゃれば教えて頂けませんか?
または、上記外部データ取り込み用のシートのみ挿入、削除を認めるという方法でも結構です。
“外部データ取り込み用のシートの挿入→削除”操作以外は、既存のシート構成を保護したいのですが、どうすれ良いか分からず困っています。
ご教授下さい。
No.3ベストアンサー
- 回答日時:
>ブックの保護をして、上記部データ取り込みのマクロを実行したらやはりエラーになってしまいました。
ブックの保護を解除しなければ当然そうなりますよね。
で、以下のようにすれば?
Sub test()
'ブックの保護解除
ActiveWorkbook.Unprotect password:="1234"
テンポラリーシートの追加
データインポート
テンポラリーシートを使っての処理
テンポラリーシートの削除
'ブックの保護
ActiveWorkbook.Protect password:="1234", Structure:=True, Windows:=False
End Sub
でどうでしょうか?
勘違いでしたらご容赦願います。
お礼が遅くなく申し訳ありません。
なるほど、ブックの保護解除とブックの保護の中に一連の操作を挟めが良いわけですよね。
確かにこの方法により、やっと思い通りのものが完成しました。
但し、よくよく自分の作ったマクロを眺めて見ると、マクロの記録に近いものがあり、まだまだという感じです。
でも、ボタンを押して今まで多大な時間を要していた操作が一瞬にして展開するのを見ると気持ちの良いものですね。
もっと勉強したいと思います。
本当にどうもありがとうございました。
No.2
- 回答日時:
#01です。
クラスモジュールで実現する方も書いてみました。VBE画面で標準モジュールとクラスモジュールを挿入し、まずクラスモジュール(Class1:名前変更不可)に以下を貼り付けます。次にSub myCbar_click()に削除してはいけないシート名を書き換えます(サンプルの"Sheet1,Sheet2,Sheet3"の部分)
Public WithEvents myCbar As Office.CommandBarButton
Public Property Set opt(setOpt As CommandBarButton)
Set myCbar = setOpt
End Property
Public Property Get opt() As CommandBarButton
End Property
Private Sub myCbar_click(ByVal Ctrl As Office.CommandBarButton, canceldefault As Boolean)
Dim ShName() As String
Dim idx As Integer
ShName = Split("Sheet1,Sheet2,Sheet3", ",") '削除不可のシート名を記入する
For idx = 0 To UBound(ShName)
If ActiveSheet.Name = ShName(idx) Then
MsgBox "このシートは削除できません"
canceldefault = True
Exit For
End If
Next idx
End Sub
次に標準モジュールには以下のVBAを貼り付けます。
Dim myCbarCls As New Class1
Sub InitializeCbarEvents()
Set myCbarCls.myCbar = Application.CommandBars("Ply").Controls("削除(&D)")
End Sub
シート画面に戻りInitializeCbarEvents()を1回実行し、Sheet1、Sheet2、SHeet3のいずれかを「シート名右クリック」→「削除」しようとすると、エラーメッセージが表示されて削除できなくなります。
InitializeCbarEventsは Workbook_OpenからCallしておけば、ブックを開くたびに実行されますので、手動で実行する必要がなくなります。
No.1
- 回答日時:
姑息的ですが「シート名タブ右クリック→削除」を選択できなくするのは以下の文で可能です。
この操作は禁止しておいて、外部取り込みシートの削除はマクロで行ってはいかがでしょうか。(マクロでなら削除できます)Application.CommandBars("Ply").Controls(3).Enabled = False
ただしWorkbooks_BeforeClose()で .Enabled = True に戻す必要があります。
本格的に対応するならクラスモジュールが必要になると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
【VBA】特定シート 名前編集・削除を禁止したい
Excel(エクセル)
-
エクセル ファイルを削除できないようにしたいです
Excel(エクセル)
-
VBAでブック保護非保護を判定するには?
Excel(エクセル)
-
-
4
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
5
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
6
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
7
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
8
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
cellsで特定の離れた範囲を選択する方法は?
Visual Basic(VBA)
-
11
VBA 存在しないシートを選択した時にエラーメッセージを表示するには?
Visual Basic(VBA)
-
12
エクセルVBA テキストボックスへのセットフォーカスについて
Visual Basic(VBA)
-
13
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
14
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
15
シートの保護のあとセルの列、幅を動かせるようにしたい
Excel(エクセル)
-
16
Excel VBA シート名変更時、重複していたら連番を付けたい
その他(Microsoft Office)
-
17
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
18
エクセルVBAでシートモジュールでのパブリック変数
Excel(エクセル)
-
19
Excelの入力規則で2列表示したい
Excel(エクセル)
-
20
【VBAユーザーフォームで閉じるボタンを表示したくない】
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
エクセルVBAでパスの¥マークに...
-
前の(左隣の)シートを連続参...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルでファイルを開いたと...
-
特定のシートの削除を禁止した...
-
VBAでシートコピー後、シート名...
-
エクセルのシート名をリスト化...
-
EXCEL:同じセルへどんどん足し...
-
シートの保護のあとセルの列、...
-
Excel、同じフォルダ内のExcel...
-
Excelで同じシートのコピーを一...
-
エクセルで前シートを参照して...
-
複数シートの色付きセルがある...
-
別シート参照のセルをシート毎...
-
エクセルif関数で、複数のシー...
-
excelでシート毎の最終更新日を...
-
エクセル 計算式も入っていない...
-
エクセル計算式解説
-
Excelのシートを、まとめて表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
-
エクセルVBAでパスの¥マークに...
-
Excelで金銭出納帳。繰越残高を...
-
Excelで同じシートのコピーを一...
-
Excelのシートを、まとめて表示...
-
エクセルでファイルを開いたと...
-
Accessのスプレッドシートエク...
-
前の(左隣の)シートを連続参...
-
VBAでシートコピー後、シート名...
-
EXCEL:同じセルへどんどん足し...
-
EXCELで同一フォーマットのシー...
-
シートの保護のあとセルの列、...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルで複数設定したハイパーリンク先...
-
複数シートの特定の位置に連番...
-
エクセルでファイル保存時に複...
-
特定のシートの削除を禁止した...
-
エクセルで前シートを参照して...
-
Excel、同じフォルダ内のExcel...
おすすめ情報