• 締切済み

シートの保護につきまして

行・列の追加削除だけ、無効にする方法は ありますか? 単にシートを保護するだけなら下記で行っております。 ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True ご回答のほど、よろしくお願いいたします。

みんなの回答

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.3

例えば、EXCEL2003以下なら 編集出来なくしてしまう。 ヒント: 下記を参考に Sub EXCEL_Version() Dim MyVersion As String Dim MyVe As Integer MyVersion = Application.Version MyVe = LeftB(MyVersion, 3) If MyVe < 10 Then MsgBox "ごめんなさい あなたの Microsoft Excel バージョン " & Chr(13) & Chr(10) _ & Application.Version & "では、動作しません " & Chr(13) & Chr(10) _ & " " & Chr(13) & Chr(10) _ & "Excel 2003 以上をインストールしてから使用してください。", vbExclamation Else MsgBox "あなたの Microsoft Excel バージョンは、" & Application.Version & Chr(13) & Chr(10) _ & " " & Chr(13) & Chr(10) _ & "合格です。", vbInformation Range("A1").Select Worksheets("Sheet1").Range("A1").Name = "Top" End If End Sub

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

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/owcvba10/html/ocproAllowInsertingColumns.asp に書いてあることだが、その使用例が難しいと思った。 他を探して 一例は Sub Protect_Worksheet() ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _ False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=True, AllowInsertingColumns:=False, AllowInsertingRows _ :=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _ AllowDeletingRows:=False, AllowSorting:=True, AllowFiltering:=True, _ AllowUsingPivotTables:=True ' ActiveSheet.Unprotect End Sub の方が判りやすい。一部FALSEに設定した。 しかしセルが保護されてのことだけに、考え方がむつかしいとおもった。2002でも動くようです。

shunpy0522
質問者

補足

ご回答、ありがとうございます。 VBA作成対象はエクセル2000で、AllowFormattingCellsなどの プロパティはサポートされないようです・・・。 どうすればよいでしょうか? まことにお手数ですが、お知恵をお借りしたく存じます。 よろしくお願いいたします。

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.1

AllowInsertingColumns:=True ' 列の挿入を許可 AllowInsertingRows:=True ' 行の挿入を許可 AllowDeletingColumns:=True ' 列の削除を許可 AllowDeletingRows:=True    ' 行の削除を許可 注意: EXCEL 2003 でのトレースです。    これ以前(2000)では、項目がないので トレース出来ませんでした。

shunpy0522
質問者

補足

ご回答、ありがとうございます。 VBA作成対象はエクセル2000で、AllowInserting~の プロパティはサポートされないようです・・・。 どうすればよいでしょうか? まことにお手数ですが、お知恵をお借りしたく存じます。 よろしくお願いいたします。

関連するQ&A

  • シートの保護について

    特定のセル("C3:I3")を編集不可にしたいのですが、 下記プログラムにするとすべてのセル(シート)が保護されてしまいます。 どこがおかしいのでしょうか。 Private Sub CommandButton1_Click() ActiveSheet.Unprotect ・・・・・・・・・・ Range("C3:I3").Locked = True ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub

  • VBScriptでEXCELシートに保護をかけたい

    いつも参考にしています VBAですと下記コードですが ActiveSheet.Protect Password:=11111, DrawingObjects:=True, Contents:=True, Scenarios:=True VBScriptのコーデイングが分かりません Set EXCELAPP = CreateObject("Excel.Application") Set BOOK = EXCELAPP.Workbooks.Open("@.xls") Set SHEET = EXCELAPP.Sheets(0) この後にシート保護のコーディングをしたいのですが。。。 ヒントをお願いします

  • EXCEL VBA シート保護のエラー

    こんにちは。 ここでいろいろ質問をさせていただき、なんとかマクロを完成させましたが・・・ 自分のPCで動かす分には、なにも問題なくうごくのですが、他のPCで動かしたところ”1004”のエラーが出てしまい動かなくなりました(”1004”は、アプリケーション定義がなんとかいうものです) Private Sub CommandButton1_Click() Worksheets("A").Unprotect Password:="○○○" Worksheets("B").Unprotect Password:="○○○" Worksheets("B").Range("B50:L100").ClearContents Worksheets("A").Range("B50:L100").AutoFilter field:=1, Criteria1:="=" Worksheets("A").Range("B50:L100").Copy Worksheets("B").Range("B50") Worksheets("B").Range("B36:L100").Interior.ColorIndex = xlNone Worksheets("A").AutoFilterMode = False Worksheets("A").Protect Password:="○○○", DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True Worksheets("B").Protect Password:="○○○", DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True End Sub 黄色くなるところは、 Worksheets("A").Protect Password:="○○○", DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True の部分です。そして画面には10枚あるすべてのシートのエラーが・・・。 Worksheets("A")と指定しているのに、10枚全てのエラーがでるのも?だし、自分のPCではうまくいくのに他ではダメというところが分かりません。よろしくお願いします。

  • エクセルVBA/原因不明の保護解除?!

    下記のコードを実行すると、終了後次回立ち上げたとき、シートの保護が解除されています。 コードではオブジェクトを含めてシートを保護し、終了時には「保存」をしているのですが、なぜか次の立ち上げでは保護が解除されています。 原因がわかりません。お助けください。 Sub Test01() Dim s, i, cr With ActiveSheet .Protect Password:="aaa", DrawingObjects:=False, Contents:=True, Scenarios:= _ True, UserInterfaceonly:=True 'オブジェクトのみ保護解除 Cells.Interior.ColorIndex = 1 'シートを黒色に Set s = .Shapes.AddShape(msoShape4pointStar, 100#, 125#, 200#, 200#) '星を配置 s.Fill.Visible = msoTrue s.Fill.Solid Randomize cr = Int((30 * Rnd) + 1) s.Fill.ForeColor.SchemeColor = cr '色をランダムに For i = 1 To 300 '点滅 s.Visible = False DoEvents s.Visible = True DoEvents Next s.Delete '星を削除 .Protect Password:="aaa", DrawingObjects:=True, Contents:=True, Scenarios:= _ True, UserInterfaceonly:=True 'オブジェクトも保護 Cells.Interior.ColorIndex = 0 'シートをもとにもどす End With ActiveWorkbook.Close '終了する End Sub

  • エクセル:常に保護をかけるがマクロは有効

    シートに、マクロ実行時以外保護をかけておきたいです。 (マクロで、ロックをかけたセルを操作したいので) 「マクロを記録する」で保護をかける操作を記録してもらったところ、 「許可する操作」は以下の記述で実行されるようです。 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _ AllowInsertingColumns:=True, AllowInsertingRows:=True, _ AllowDeletingColumns:=True, AllowDeletingRows:=True ここに「マクロからの変更は有効」の UserInterfaceOnly:=True を加えた以下のコードは、 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _ AllowInsertingColumns:=True, AllowInsertingRows:=True, _ AllowDeletingColumns:=True, AllowDeletingRows:=True, UserInterfaceOnly:=True どのSubに記述すればよいでしょうか。 ワークシートに直接書込むんですよね? Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub に書いてみたら一時期正常に動いていたと思うのですが、どうやら勘違いだったみたいです。 ActiveもChangeも違うようなのですが(なぜかどちらも一時は動いたような…)。

  • エクセル97 フォームシートの保護をする時に出る"パスワード"をコード化させたい

    「表示-ツール-フォーム」でボタンを作りました。 そして、マクロの自動登録で「シートの保護」を選び「パスワード:password」を設定し、更に「password」で保護解除をし、マクロ記録終了。 そして、各コードを「シートの保護」:ボタン3、「シートの解除」:ボタン2、に設定しました。 それらを実行させてみたのですが、特に「パスワード:password」を聞かれることなく一連の作業が終了してしまいました。 コードは以下のとおりです。 Sub ボタン2_Click() ' ' ボタン2_Click Macro ' マクロ記録日 : 2004/2/9 ユーザー名 : **** ' ActiveSheet.Unprotect End Sub -------------------------- Sub ボタン3_Click() ' ' ボタン3_Click Macro ' マクロ記録日 : 2004/2/9 ユーザー名 : **** ' ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub そこで、各ボタンのクリック時に、パスワードを聞いてきてくれるコードを書き加えたいのです。 わかる方がいらっしゃいましたら、是非教えてください!! コードに関して素人ですので、できたら、全体を通してコードを教えて頂ければ助かります。 いろいろ探してみたのですが、ギブアップです。 宜しくお願い致します。

  • シートの保護のあとセルの列、幅を動かせるようにしたい

    EXCELマクロでシートの保護はするがセルの行、列の幅を動かせるにしたいです。 シート1,2,3があり、シート2,3のデータをシート1に集約する処理を 行っています。 シート1,2,3は事前にシートの保護を設定し、シートの保護の設定で、ロックされたセル範囲の選択、セル書式設定、列の書式設定、行の書式設定は許可しています。 シート1にシート2,3のデータを設定する時にActiveSheet.Unprotect Password:="password"でシートの保護を解除し、設定後にActiveSheet.Protect Password:="password"を再度保護しています。 空の状態のシート1はセルの行、幅を動かすことはできるのですが、上記のシートの保護を解除し、データ設定後、ActiveSheet.Protect Passwordコマンドで保護するとシート1のセルの行、幅を動かすことができなくなります。 シートの保護設定のやり方があるのでしょうか。 ご指導のほど、よろしくお願いいたします。

  • 保護の解除・設定

    いつもありがとうございます。 現在シートの保護がパスワード入りでかかっています。 マクロで保護を解除するときに、 パスワードを入力不要で解除できませんか? また、引続きシートを保護するときに、 パスワードを入力しないで、元の、パスワードで、 保護が出来るでしょうか? 現在は、下記のようになっています。 (マクロの記録でしか作れませんので・・、) ActiveSheet.Unprotect ActiveWindow.SmallScroll Down:=24 Range("B50:X69").Select Selection.Copy ActiveWindow.LargeScroll Down:=-2 ActiveWindow.LargeScroll ToRight:=-3 ActiveWindow.SmallScroll Down:=-9 Range("B1").Select ActiveSheet.Paste Range("B2").Select Application.CutCopyMode = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 以上、よろしくお願い致します。

  • EXCEL(VBA)でシート保護がかかったシートにクリックボードから貼り付けしたい

    EXCEL2000のVBAで、クリップボードにコピーしたデータ(複数のセル範囲)を、シート保護がかかった別のシートにコピーする操作を行ないたいと考えています。 手順としては「1.クリップボードにコピー」→「2.シート保護解除」→「3.貼り付け」→「4.シート保護」なのですが、下記マクロを作成して試してみたところ、2.のシート保護解除を行なった時点でクリップボードが空になるようで、「実行時エラー'1004':RangeクラスのPasteSpecialメソッドが失敗しました。」と表示され貼り付けができません。 これについて何か回避策はないでしょうか? Range("A1:C3").Select Selection.Copy Sheets("貼り付け先シート").Select ActiveSheet.Unprotect Range("A1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 以上、よろしくお願いします。

  • 作業グループを設定した複数シートの保護につきまして

    タイトルの設定をエクセル2007で行っております。 ひとつのシートを設定した場合はできたのですが、 複数シートを選択しての設定ができません。 シートは下記の3つあります。 ・あ行 ・か行 ・集計 3つのシートの「あ行」と「か行」の2つのシートに、 保護をかけた状態でも作業グループの「+」「-」がいじれる設定にしたいです。 WEBで調べてやったのが、下記のマクロです。 Private Sub Workbook_Open() Sheets(Array("あ行", "か行")).Select.EnableOutlining = True Sheets(Array("あ行", "か行")).Select.Protect Password:="****", DrawingObjects:=True, _ contents:=True, UserInterfaceonly:=True End Sub どうにもうまくできません。 ご存じの方お教えくださいますでしょうか。 どうぞ、宜しくお願いいたします。

専門家に質問してみよう