• 締切済み

エクセルVBAのシート操作。

ワークブックのシートを削除させない(または、削除を選択できない) ようにするには、どうすればよいのでしょうか?

みんなの回答

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

シートの保護ではダメね。 シートタブを非表示にしても,「編集」から削除できる。 ブックを保護しないと。 保護 Workbooks("ブック名").Protect Structure:=True, Windows:=True, Password:="abc" 保護解除 ActiveWorkbook.Unprotect Password:="abc"

noname#131542
noname#131542
回答No.2

追加策として、先ほどマクロを教えて者です ではシートの見出し自体を非表示にしてしまいます  sub hihyozi() if activewindow.displayworkbooktabs = true then activewindow.displayworkbooktabs =false else activewindow.displayworkbooktabs=true end if end sub シート見出しが非表示状態でおなじマクロ実行すると再表示できます 3

noname#131542
noname#131542
回答No.1

説明すると長くなりますが、protect 関数が使用できます 単純に使い方説明すれば sub hogo() worksheets ("シート名").protect passwoed:="sousafuno" end sub となります 解除するにはprotect を unprotect になりますが・・・ 削除してかまわないデータ作成してためしてください 詳しく説明するとこの程度ではすまないので一番簡単な使用方法だけですが

machine_angel
質問者

お礼

回答ありがとうございます。 シートに保護がかかりましたが、シート名に カーソルを持ってきて、マウスの右クリックで 削除することができてしまうのですが、、、

関連するQ&A

  • Excel VBA

    Excel VBAを勉強中の者です。 複数のワークブックを開いているため、ワークブックから指定していってセルを選択したいと思い下記のようなコードにしてみたのですができませんでした。 Workbooks(“C:\フォルダ\ワークブック.xls”).Worksheets(“C”).Range(“A1”).Select このようなコードは有り得ないのでしょうか? または、ワークブックを開いて、ワークシートをアクティブにして、セルを選択するというように、ひとつひとつ選択していくのではなく、一文でワークブックからセルまで指定する他の方法はありますでしょうか? 教えてください。よろしくお願いします。

  • エクセル 複数のシートに同じ操作をする

    データベースを作っています。 シート一枚に一件のデータです。 ですから、複数のシートで同じ並びに同じようなデータが入っています。 例えばシートAを基本にしてシートB、Cがあった場合 列a~dにデータがありましたが これを全部削除して他のデータを入れるという作業をする時に 列削除をすると削除後、選択状態は続いたままですよね。 シートAの列a~dに新しいデータを入れた場合も シートB,Cの列選択はまだ続いたままなので シートAの列a~dをコピーして あとはシートB,Cを選択してCTRL+Vするだけで データが入っていくので楽です。 で、ようやく質問なのですが 最後のシートB,Cの選択をいちいちしないでも 一気にBもCもペーストすることはできますでしょうか? 今はシートが二枚くらいなので問題ないですが シートが20枚とかになったら面倒だなと思いまして。 分かりにくい質問文で失礼します。 どなたかよろしくお願い致します。

  • ExcelのワークシートをVBAで削除する方法

    Excelのオブジェクトを作り、ワークブックを作りワークシートを1つだけ作り、ワークシートの名前を"abc"にするにはどうしたらよいでしょうか? x=CreateObject("Excel.Application") y=a.Workbooks.Add z=y.Worksheets(1) をやると、シートがExcel標準の3シートつくられます。ここまでは理解できるのですが、上記のsheet1の名前を変更。残りのsheet2,sheet3を削除するにはどうしたらよいでしょうか?

  • excel シートコピー

    シートのデータすべてを別のワークブックに コピーしたいのですが、元のシートが他のシートへリンク などしているので、形式を選んで「数式」で貼り付けをしたいと 思っています。 実際やってみると、形式を選択して貼り付けが 『ワークシートオブジェクト』になってしまい、困っています。 どうすれば良いか教えてください。

  • エクセルVBAにてワークシートの挿入

    エクセルで作った『ひな型』のシートを同じワークブック内に、 1号,2号,3号・・・と挿入したいのですが VBAの初心者につきさっぱりわからないので 誰かアドバイスください。

  • エクセルVBAで全シートをアクティブにするには?

    ブック内の全シートを選択するのはSheets.Selectですね。 そうやって選択した全部のワークシートをアクティブにするにはどう記述するのでしょうか? SelectedSheets.Activateや Sheets.Activateではエラーになってしまいました。 何をしたいかといえば、全シートをアクティブにしてページ設定(横向きに)したいのです。

  • EXCEL VBAでシートを削除したい

    こんにちは。EXCEL VBAのことで質問させていただきます。 マクロでシートを削除しようと思い、 下記のように記述しました。 Sheets(1).Select ActiveWindow.SelectedSheets.Delete しかし、このように記述すると「選択したシートを削除します。~」のようなメッセージが出てきてしまうため、何度もOKボタンを押さなければなりません。これではマクロで自動実行した意味がなくなってしまいます。 このメッセージを回避する方法はないでしょうか。 宜しくお願い致します。

  • エクセルVBA シートの保護について

    エクセルの「シートの保護」について教えてください。 特定のシートのみ、保護したいと思っています。 そのシートの一定の範囲には、入力のみを許可したいです。 というのも、他の範囲(保護したい範囲)には、数式やvbaが設定されており、むやみやたらに「切り取り」や「行や列の削除」をされると困るからです。 そこで、 入力を許可する範囲を選択 →セルの書式設定 →保護のロックを外す →シートの保護 →「ロックされていないセル範囲を選択」を選択 しました。 この状態でマクロを実行すると、エラー1004(保護されたシートに対してこのコマンドは使用できません)とエラーが出ました。 エラー箇所は以下のとおりです。 Intersect(Worksheets("sheet1").Range("C5").CurrentRegion, Worksheets("sheet1").Rows("5:65536"), Worksheets("sheet1").Columns("C:T")).Select (質問1) ロックを外し、その後にシートの保護をする際、「全範囲を選択してから」シートの保護を行うものなのでしょうか。 それともシートの保護をすれば、自動的に、ロックを解除した範囲以外(全範囲)で保護したことになるのでしょうか。 「全範囲を選択してから」シートの保護をすると、ロックを外したセルを選択しても、アクティブセルが罫線で囲われずどこを選んでいるのか分からなくなってしまったので。 もし、あえて全範囲を選択する必要がないなら、それでいこうと思っています。 (質問2) 上記エラーを解消するには、どうしたら良いのでしょうか。 全範囲を選択できないように保護していることが原因かと思い、全範囲について「シートの保護→ロックされたセル範囲の選択」を選んでもエラー解除できませんでした。 また、Intersect.Selectの一行上に「ThisWorkbook.Unprotect」と追加しても解除できませんでした。 2つも質問して申し訳ありませんが、ご存知の方はご教授お願いします。 よろしくお願いします。

  • Excel 2003 シートの削除

    Excel 2003でシートの削除ができません。 シートの削除をするためシートを選択し、編集でシートの削除をクリックしようとしても、シートの削除が薄く表示され、クリックできません。対処方法を教えてください。

  • Excel VBAの実行中に実行を中断して通常のエクセル作業を入れたい。

    Excel VBAの実行中に実行を中断して通常のエクセル作業を入れる方法を教えてください。 1.Application.GetOpenFilenameで選択してワークブックを開く。 2.そのワークブックのシートの中から目的とするシートを選択する。 3.選択したシートを新しいワークブックにコピーする。 4.開いたワークブックを閉じる。 という一連の作業の中で、2.については通常のエクセルの作業のようにシートを一枚ずつ確認して選択する必要があります。 現在、stopを使って強引に中断させているのですが、何か良い方法はありますでしょうか? よろしくお願いします。 ちなみに、今、私が作っているのプロシージャーは下記のようなものです。 Private QUOTfile As String Private filename As String Sub QUOTfileOpen() QUOTfile = Application.GetOpenFilename("Microsoft Excelブック,*.xls") If QUOTfile <> "False" Then Workbooks.Open QUOTfile End If filename = ActiveWorkbook.Name Stop ActiveSheet.Copy With Application .Dialogs(xlDialogSaveWorkbook).Show End With Workbooks(filename).Close saveChanges:=False End Sub

専門家に質問してみよう