ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュのペーストを禁止させる方法

  • mixiチェック
  • このエントリーをはてなブックマークに追加
当方エクセル2003です。
ペーストを禁止させる方法が知りたいのですが調べても見当たりません。
あるセルにおいて「入力規則」でリスト選択式にして想定文字列を制限しています。
そのセルに対して「わからずやな人」が別のセルをコピー&ペーストして
上書きしてしまいます。目的としてはこれを防ぎたいのです。

書き込もうとする動作に対しては「入力規則」に従いエラーになりますが、
どこかのセルをペーストされてしまうとコピー元セルの「書式設定」まで
上書きされちゃうので「入力規則」設定が効かず、上書きされてしまうのです。

該当セルをロックした上でシートを「保護」しても、ペースト可能な状態です。

いったいどうすれば任意のセルに対してペースト行為を禁止させることができるのでしょうか…。

よろしくお願いいたします。

コメント(23)

お手軽にできそうなのは、セルを選択した時やシートをアクティブにした時に
コピーモードを解除するマクロを実行させる方法です。

シートタブを右クリックして、「コードの表示」を選択してください。
VBE が起動して、そのシートのモジュールがアクティブになるはずなので、
そこに↓のコードを貼り付けます。
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Application.CutCopyMode = False
End Sub

Private Sub Worksheet_Activate()
  Application.CutCopyMode = False
End Sub
こうすれば、かなりの確率で入力規則が破壊されるのを防ぐことができるかと思います。

なお、当然のことながら、マクロが有効な状態になっていないと意味がありません。
ビリーさん

回答ありがとうございます。
マクロが登場するということは…
通常機能には無いということでしょうかがまん顔


しかしマクロを使えば回避できるということがわかってウレシイです。


どちらさまか知りませんが関係ないコメントは目障りなのでご遠慮下さい。

私は目的を持ってトピックをたてています。
あなたの行為は邪魔なだけです。

よろしくお願いします。
文字化けしている原因は半角のカタカナだと思います。環境によっては文字化けします。
minmaxさん
ありがとうございます。

マリエルさん
あなたもよくわからない人ですね。
回答をもらえばうれしいに決まっています。
あなたのはよくわからない屁理屈です。

Kusakabeさん
すみません、保護でペースト可能というのは間違いでした。
そもそもリストの選択をさせたいのに保護状態ではそれすらできません。
保護機能で回避できるかどうかなど色々試しているうちにこんがらがってしまいました。
すみませんでした。
らびさんへ

特定のセルの値は変更してよいけど書式は変更されちゃ困るのですね。
でしたら、「範囲の編集の許可」を使うとよいでしょう。

手順1 該当するセルをロック(セルの書式設定の保護タブから)する
手順2 メニューバーの「ツール」→「保護」→「範囲の編集の許可」を実行
手順3 「範囲の編集の許可」画面で該当セルの範囲を新規登録
手順4 そのまま「シートの保護」ボタンを押下し、シートを保護する

手順3での詳細は省略しましたが、やってみれば直感的にわかると思います^^;
※添付画像のようにリストに該当セルが登録されればOK

これで、デフォルト設定でのシートの保護において、
ロックした該当セルの値や数式の変更が可能となります。
「セルの書式設定でのロックを無効にする機能ではない」ことはご認識くださいね。
上のコメントで画像添付忘れました・・・
よっちゃんさん

画像まで添付して頂きありがとうございます。
しかし…こちらの言葉が足りませんでした。

> 特定のセルの値は変更してよいけど書式は変更されちゃ困るのですね。
特定のセルの値も書式も変更されたくないのです。
想定以外の文言は拒否して、リストにある想定された文言を選択させたいのです。

(もちろんよっちゃんさんの提案を受けて「範囲の編集の許可」を使って動作確認済みです。)
>2さんのような、コードで排除する方法
(さらに、コード上でセルをチェックして、対象セルだけ制限)が、
コピペ「排除」の方法としては手っ取り早いとは思いますが、。

うーんどうなんでしょ。
その入力ドキュメントはかなり、入力担当者にとっては
「わからずやなエクセルファイル」になっているのかも
知れません。
コピペ(しかもctrl+v?)を知っているということは、
そこそこのスキルの人だと思いますし。

コピペを使いたがる人には、
「マウス使わなくても、リストボックスはalt+↓でリストを開けるので、↑↓で選んで
エンター押せばキーボードでも選択できますよ」
とかアドバイスすれば、それでわかってくれることもありますよ。


理由が、「キレイに印刷したいので書式は変えてほしくない」などであれば、
僕だったらシートを二つつくり、
「Aシートに入力してください。Bシートに情報が反映されます」
みたいにして、そもそもBシートには入力をしないように促します。
で、Aシートには、コピペしようと書式設定を変えようと構わない…
みたいにしますね。

スキルの低いシステム屋ほど、制限することで「管理」しようとする人が
多いです。その結果、全体の業務スピードはむしろ落ちたりします。
らびさんがそれに当てはまるかわかりませんが、
排除するだけでなく、創意工夫することも必要な気がしますね。


で、肝心の「こちらの指定した選択肢しか入力させない」ですが、
VBAの「コンボボックス」「リストボックス」を使えば、
けっこう当たり前のようにできます。

コピペしたがるということは、
それだけそのドキュメントが、「入力しにくい」ようになってるのかも
しれないです。

・使用頻度が高く
・なおかつ急いで使うことが多い
・入力する情報も多い

のであれば、キーボードで入力しまくっているときに、
ところどころマウスで操作しないといけないとしたら、
ついコピペを使いたがる人の気持ちも、わからなくないです。

あと、文字列を入力させず、
1:有給
2:欠勤
3:早退
みたいに、コード一文字を入れれば反映されるようにするのもいいかもしれません。

ああ長文失礼。
何か誤解されているかもしれませんので念のため。

13:らびさん
> > 特定のセルの値は変更してよいけど書式は変更されちゃ困るのですね。
> 特定のセルの値も書式も変更されたくないのです。
> 想定以外の文言は拒否して、リストにある想定された文言を選択させたいのです。

入力規則のリストが設定されたセルにおいて、
プルダウンから項目を選択することはすなわち値の変更です。

他セルをコピーして当該セルにペーストされてしまうことにより、
当該セルに設定してある入力規則が壊されてしまうので、
そうさせない方法を求めていらっしゃったのではないですか?
(↑ペーストを禁止させたいこともそもそもの目的)

>>11の方法で「範囲の編集の許可」を使うことにより、
値の変更(リストからの選択含む)はできますし、
書式の変更(コピーしている他セルのペースト含む)は制限させることができます。
>>16
page downを押しっぱなしにする、とか。
って100個あったらコードを手入力してもらうのが一番でしょ。
言い回しが不明瞭すぎるし…>18
そういうときこそ、>14で書いた「シート二つ方式」を
採用して、コピペし放題にすればいいんです。

さて>1さんはどういう選択をするのやら。
皆さん、コメントありがとうございます。

どうやら状況をしっかりと説明しないとやはり言葉足らずに陥ってしまうと
思いましたので、状況をなるべくわかりやすく簡単に記載させて頂きます。

当方のエクセルでは、入力者が入力した値を元にして別シートで機器設定コマンドが自動生成されます。
設定投入時と設定削除時に入力者はこちらへエクセルを送付します。
やはり対象が機器ということで、かなり項目はシビアです。
ちょっとでも構文を間違えると設定反映してくれません。
だから文字列は選択式にして想定通りにしているのです。

で、このエクセルも徐々に改版され便利になってきています。
その改版の流れで想定する文字列も変化したりします。

この状況で2年前に設定したものを設定削除したいとき、入力者は当時のエクセルから
最新のエクセルにコピペをしてきます。しかし、今では改版されたエクセルを使っているので
当時の文言ではコマンドがうまく自動生成されないのです。
これが今回の問題点なのです。

知りたいのは、古いエクセルからコピペしたときに、その文字列を受け付けない機能です。
新しいエクセルには新しい想定文字列がリストで指定されているので、そこから
指定して欲しいのです。



ぶっちゃけると、僕が送付エクセルを見てその間違いに気付いてすぐに修正すればいいのですが、
やはりできれば美しくコマンド生成されたエクセルを送付してもらいたいな、という思いがあります。

ご理解頂けましたでしょうか。。
なんだかわかりにくくて本当に申し訳ありません。

「範囲の編集の許可」を使うと、書式は壊されないけど
ペーストによってリストに無い値を入力させることができるのですね。(バグ?)
知りませんでした^^;

代替案として、ワンステップ置いてみるのはどうでしょう。
仮に、現在の入力させるセルをA1とします。
で、今後ユーザに入力してもらうセルはB1にします。
A1には、B1セルの値が本来のリストにある値だったらその値、
本来のリストに無い値がB1セルに入力されていたら「エラー!!」等の表示をします。
A1セルに条件付き書式でも入れておけばユーザは直ぐに入力エラーに気づくことでしょう。
で、A1セルは保護しておきます。

こうすると、A1セルはリストにある値もしくは赤塗りのエラーの表示しかありませんが、
エラー表示されていればユーザも「あぁ、コピペはダメなんだったっけ・・」と気づき
らびさんサイドへはきちんと入力がされたファイルが届くと思うのですがいかがでしょう。
よっちゃん
> 「範囲の編集の許可」を使うと、書式は壊されないけど
> ペーストによってリストに無い値を入力させることができるのですね。(バグ?)
そうなんですよ!まさにソレです。

代替案、面白いですね!
入力シートの目立つ部分に間違ったら赤くエラーになるようなセルを設ければ
気付きやすいですね。間違ったときしか表示させないようにしたほうがいいかも?

かなり良い案かも。

ログインすると、残り8件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。