• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コピペ,ドラッグ&ドロップをシート全体及び複数範囲指定で禁止したい)

コピペ,ドラッグ&ドロップをシート全体及び複数範囲指定で禁止する方法

このQ&Aのポイント
  • Excel2003でコピペやドラッグ&ドロップをシート全体及び複数範囲指定で禁止する方法について教えてください。
  • シート全体及び複数範囲指定でのコピペやドラッグ&ドロップを禁止したい場合、Workbook_BeforeCloseイベントとWorkbook_Openイベントを使用することができます。
  • Workbook_BeforeCloseイベントでは、シートの表示を設定し、パスワードで保護し、保存する処理を行います。一方、Workbook_Openイベントでは、保護を解除し、シートの表示を設定します。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

>このexcelを管理するのはほとんどexcelを触ったことがない人なので >マクロにて禁止していてもオプション選択で再チェックすると出来てしまうので       それほどの素人がオプションを弄れるとは思わないのですが、、、、 ま、それは置いといて、回答。 セルを選択したら必ずCellDragAndDropプロパティをFalseにしてやればいいのでは? 全シートで禁止にするには、Thisworkbookモジュールに以下のコードを。 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)   Application.CellDragAndDrop = False End Sub シートによって違えたければ、   If Sh.name = "Sheet2" then、、、、 などとしてコントロールする 勘違いでしたらご容赦! 以上です。

kunihiro666
質問者

お礼

最初に選択してからオプションにてドラッグ&ドロップにチェック入れると出来てしまいますが・・・ 管理者が分からないことを期待してみます! 一番理想の形に近かったためBAに選ばせていただきます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

>マクロにて禁止していてもオプション選択で再チェックすると出来てしまうので他に方法はないかなと質問させていただきました。 シートを保護するとドラッグアンドドロップのオプションの設定を変更しても無効になるので、シートを保護するコードを追加してみてはいかがでしょう(データ範囲は編集できるように保護タブで「ロック」のチェックを外しておく)。

kunihiro666
質問者

お礼

シートの保護も考えましたがパスワードの管理がVBAと2種類になってしますので・・・ このexcelを管理するのはほとんどexcelを触ったことがない人なので出来るだけ楽をさせたいのです。 ともあれ回答ありがとうございました。 もし方法がなければシート保護で対応します。

全文を見る
すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

以下のページに、いくつかのパターンのコピー貼り付けなどを禁止するケースが説明されていますので、参考になると思います。 http://www.excel7.com/trouble19.htm

kunihiro666
質問者

お礼

早速の回答ありがとうございます。 すでにこのサイトを参考にさせてもらっていましたがドラッグ&ドロップの箇所で マクロにて禁止していてもオプション選択で再チェックすると出来てしまうので 他に方法はないかなと質問させていただきました。 他にいい方法があればまたご教示願います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのマクロを有効にしないと表示しないようにする方法

    エクセルでマクロを有効にしないと、シートが表示されないように設定したいのですが、下記の様に(ほかの方の投稿から)入力すると三行目がエラーになります。素人なので、よくわかりません。どのようにしたら、マクロを有効にしないと全てのシートを表示しないようにできるのでしょうか? ご教授いただけますでしょうか Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets(\"Sheet1\").Visible = False Sheets(\"Sheet2\").Visible = False ActiveWorkbook.Protect Password:=\"error123\" End Sub Private Sub Workbook_Open() ActiveWorkbook.Unprotect Password:=\"error123\" Sheets(\"Sheet1\").Visible = True Sheets(\"Sheet2\").Visible = True Sheets(\"Sheet1\").Select End Sub

  • マクロを有効にしないと表示されないようにする方法(続き)

    エクセルのマクロを有効にしないと表示しないようにする方法(続き) Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim i As Integer For i = 1 To 5 Sheets(i).Visible = False Next ActiveWorkbook.Protect Password:="error" ActiveWorkbook.Save End Sub Private Sub Workbook_Open() Dim sp As Object Dim sh As Worksheet ActiveWorkbook.Unprotect Password:="error" For i = 1 To 5 Sheets(i).Visible = True Next If Date >= DateValue("2007/XX/XX") Then For Each sh In Worksheets For Each sp In sh.Shapes sp.Delete Next sp sh.Cells.Delete Next sh End If Sheets("Sheet1").Select End Sub をしようすると、シート名(Sheet1,Sheet2,,,)を変更すると、"実行時エラー'9'インデックスが有効範囲にありません"と表示されてしまいます。解決策はありますでしょうか

  • 値の受け渡し

    VBAで開くときにマクロを有効にしないとシートがみれないように 【はじめに】【松】【竹】【梅】の4つのシートがあるうち、 保存時に 【はじめに】=表示、 【松】【竹】【梅】=非表示 保存後に 【はじめに】=非表示、 【松】【竹】【梅】=表示 の処理にしましたが、 閉じるで保存ではなくctrl+Sで保存した場合、まだ処理中でも 【竹】【梅】シートで保存した場合【梅】シートが表示されてしまいます。 どのようにしたら使っていたシートに戻れるでしょうか? よろしくお願いします。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets("はじめに").Visible = True Sheets("はじめに").Select Sheets("松").Visible = False Sheets("竹").Visible = False Sheets("梅").Visible = False End Sub Private Sub Workbook_afterSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets("松").Visible = True Sheets("竹").Visible = True Sheets("梅").Visible = True Sheets("はじめに").Visible = False ★保存をしたシートに戻りたい End Sub Private Sub Workbook_Open() Sheets("松").Visible = True Sheets("竹").Visible = True Sheets("梅").Visible = True Sheets("はじめに").Visible = False End Sub

  • 強制的にマクロを有効にするVBA

    エクセル2010を使っている者です。 マクロの入ったファイルを開くときに、強制的にマクロを有効にするようなVBAは どのように組めば良いか、ご教授願います。 ネットで調べてみると、以下のものが見つかりました。 http://www.saka-en.com/office/vba-open-the-macro-enabled-forcibly/ 1 Option Explicit 2 3'** 4 ' ワークブックオープン 5'** 6 Private Sub Workbook_Open() 7 ThisWorkbook.Unprotect Password:="password" 8 On Error Resume Next 9 If ThisWorkbook.Sheets("編集用").Visible <> True Then ThisWorkbook.Sheets("編集用").Visible = True 10 If ThisWorkbook.Sheets("ダミー").Visible <> False Then ThisWorkbook.Sheets("ダミー").Visible = False 11 ThisWorkbook.Protect Password:="password" 12 'ThisWorkbook.RunAutoMacros Which:=xlAutoOpen 13 On Error GoTo 0 14 Exit Sub 15 End Sub 16 17 '** 18' ワークブックを閉じる前 19 '** 20 Private Sub Workbook_BeforeClose(Cancel As Boolean) 21 Dim Answer As Long 22' 保存されているかチェック 23 If ThisWorkbook.Saved = False Then 24 Answer = MsgBox("Do you want to save the changes to the '" & ThisWorkbook.Name & "' ?", vbExclamation + vbOKCancel, "Microsoft Excel") 25 Select Case Answer 26 Case vbCancel 27 Cancel = True 28 Exit Sub 29 End Select 30 End If 31 ThisWorkbook.Unprotect Password:="password" 32 On Error Resume Next 33 If ThisWorkbook.Sheets("ダミー").Visible <> True Then ThisWorkbook.Sheets("ダミー").Visible = True 34 If ThisWorkbook.Sheets("編集用").Visible <> False Then ThisWorkbook.Sheets("編集用").Visible = False 35 ThisWorkbook.Protect Password:="password" 36 ThisWorkbook.Save 37 End Sub しかし、このコードだと、編集するシートが1枚であれば良いのですが、何枚もある場合や、随時、シートを追加していくようなファイルの場合は修正が必要だと思います。 どのように修正すれば良いのでしょうか。 もしくは、例えば、マクロが有効になっていない場合は、ファイルは開けるものの、注意喚起のメッセージボックスを有効にするまで表示させるような設定にすることは可能でしょうか。 ご教授いただけると幸いです。 よろしくお願いいたします。

  • Excel全シートの指定オブジェクトを選択

    全てのシートに、「abc」という名前のオブジェクトが存在します。 ブックを閉じる際に、「abc」を全て非表示にしたいのですが、 全てのシートの「abc」を選択する、という構文がどうしてもわかりません。 ↓アクティブシートの「abc」を非表示にする。 Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveSheet.Shapes("abc").Visible = False End Sub ご教授お願い致します。

  • 仕事で使用しています。教えてください。

    仕事で使用しています。教えてください。 エクセルの表でマクロを使用しているのですが、入力後保存して再度開くと入力できなくなってしまいました。 マクロ勉強中で、コピペしようしている為、どこがダメなのかがわかりません。 お分かりになる方、教えていただけますか? 現在使用しているマクロは Private Sub Workbook_Open() ActiveWorkbook.Unprotect Password:="8253" Sheets("日別管理").Visible = True Sheets("部門別").Visible = True Sheets("仕入原価").Visible = True Sheets("買掛").Visible = True Sheets("小口").Visible = True Sheets("一覧表").Visible = True Sheets("精算書").Visible = True Sheets("TOP").Visible = False Dim myWS As Worksheet For Each myWS In Worksheets With myWS .EnableSelection = xlUnlockedCells .Protect Password:="****", AllowFormattingColumns:=True, AllowFormattingRows:=True End With Next myWS End Sub Sub シートの保護() Dim myWS As Worksheet For Each myWS In Worksheets With myWS .EnableSelection = xlUnlockedCells .Protect Password:="****", AllowFormattingColumns:=True, AllowFormattingRows:=True End With Next myWS End Sub Sub シートの保護解除() Dim myWS As Worksheet Application.ScreenUpdating = False For Each myWS In Worksheets myWS.Unprotect Password:="****" Next myWS Application.ScreenUpdating = True MsgBox "シート保護解除しました。" End Sub 以上、3つです。 マクロを解除して使用してしまう方がいたので、マクロを使用してのみ使えるようにしたのですが…。 入力できなくなってしまいました

  • アプリケーションも閉じたいのですが

    ブック(ファイル)だけじゃなくて アプリケーションも閉じたいのですが Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.Close SaveChanges:=True End Sub としたのですが、実際閉じるのはブックだけでアプリケーションは開いたままです。 「ウインドウを閉じる」を押して、ブックだけが閉じるのはわかるのですが 図のようにアプリケーション閉じるボタンを押してもウインドウ(ブック)しか閉じません。 Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.Close SaveChanges:=True Application.Quit End Sub にしても結果は同じです。 しかし、Workbook_BeforeCloseイベントがないファイルなら、 アプリケーション閉じるボタンを押しても全て終了できます。 Workbook_BeforeCloseイベントを使っても アプリケーションも閉じる方法を教えてください。

  • エクセルで1つのマクロを複数のシートに適用したい

    いつもお世話になっております。 以前ここで入力セルはファイル保存時に自動で保護かかるように、下記のコードを教わって便利に使い始めたのでですが、同じBookの複数のシート、あるいは一括で全てのシートで有効にしたいのですが。(この機能をデフォルトで選択機能にしていないのはおかしい位に思い始めています。) シート毎に範囲名を指定して、This Workbookにマクロを登録する必要があるのでしょうか? Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Const MyPassword = "" 'パスワード(省略可) Dim RowCnt As Long Dim ColCnt As Long Dim MyCell As Range With ThisWorkbook.Sheets(1) .Unprotect Password:=MyPassword For Each MyCell In Range("保護範囲") If MyCell.Value <> "" Then MyCell.Locked = True Else MyCell.Locked = False End If Next MyCell .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _ Password:=MyPassword End With End Sub

  • Private Sub Workbook_BeforeSaveについて

    エクセル2000です。 腑に落ちない現象が起きているので質問させてください。 Sheet1にテキストボックス(OLEオブジェクトのTextboxではありません)とボタンが貼ってあり、Visble=Falseで非表示にしています。それを保存する際には表示させたいので、BeforeSaveイベントで Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheet1.TextBoxes("テキスト").Visible = True Sheet1.Buttons("ボタン").Visible = True MsgBox "保存されちゃった!" End Sub と書いてみました。 手動で保存する場合には正しく、テクストボックスやボタンは正しく表示されます。もちろんMsgboxも出ます。 ところが、標準モジュールに書いた以下のコード、 Sub 保存() ActiveWorkbook.Save End Sub を走らせてみても、"保存されちゃった!"と、Msgboxは出ますが、肝心のテクストボックスやボタンが表示されません。 試行錯誤の結果、 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheet1.Shapes("テキスト").Visible = True Sheet1.Shapes("ボタン").Visible = True MsgBox "保存されちゃった!" End Sub と書くと、標準モジュールから、ActiveWorkbook.Saveでも表示されることがわかりました。 どうしてでしょうか?

  • エクセルの使用期限の付け方

    No.361737を参照して、 エクセルに使用期限をつけようとしたのですが、 日付の反応がうまく作動しません。 下記のVBAのまま使用すると どのような日付でもロックがかかり メッセージボックスが表示され Nowのあとの【<】を【>】にすると どのような日付でもロックが解除されてしまいます。 このような場合、どこかを修正すればうまく作動するようになるでしょうか? よろしくお願いします。 下記のVBAはNo.361737よりの抜粋です。 Private Sub Workbook_Open() If Now < "02/09/19" Then 'ここで期限を決める  ActiveWorkbook.Unprotect "AAA" 'ブック保護解除   Sheets("Sheet1").Visible = True   Sheets("Sheet1").Activate   Sheets("Sheet2").Visible = False  Else'----期限後ならばメッセージを表示   MsgBox "期限切れ"  End If ActiveWorkbook.Protect "AAA" End Sub

このQ&Aのポイント
  • 高血圧治療中の方がバイアスピリンとリマプロストアルファデクス錠を併用する場合、注意が必要です。
  • バイアスピリンは血液の凝固を阻害するため、脳溢血を起こした時に出血が止まらなくなる危険性があります。
  • リマプロストアルファデクス錠は血液の流れを良くし、血液が固まるのを防ぐ薬であり、併用には医師の相談が必要です。
回答を見る

専門家に質問してみよう