好きなおでんの具材ドラフト会議しましょう

データを蓄積していくエクセルファイルを共有しているのですが、他の書式からそのまま貼り付けを行う人が少なからずいるため、そのエクセルファイルの一部分のみ枠線がなかったり文字のフォントがおかしかったりということがよくあります。貼り付けは全て値しかできないようにする、あるいは他の書式も一緒にコピーしようとすると禁止がでるといった方法はあるのでしょうか・・?

質問者からの補足コメント

  • 質問の具体例を下記に示します

    他のシステム、あるいはエクセルシート、エクセルブックのある箇所をコピーして、貼り付け先には通常ダブルクリックしてから貼り付け、あるいは数式バーにカーソルを持っていって貼り付けするところを、そのままセルの上でctrl+V,あるいは右クリック→貼付で貼付けを行う

    すると結果的に、コピー元の値以外の書式(罫線)だったり文字の中央揃えなど細かい設定まで貼付けされてしまうといった現象です

      補足日時:2016/05/24 21:24
  • 申し訳ないです。プロシージャというものについて存じていないため同じものを再現できない事に気が付きました。

    No.3の回答に寄せられた補足コメントです。 補足日時:2016/05/24 21:53

A 回答 (6件)

ごめんなさい。

記述ミスがありました。下記の部分を訂正してみて下さい。
誤)On Eror GoTo Err_fin
正)On Error GoTo Err_fin

ちなみに、エラーが表示されるのは、コピーをせずにペーストしたような場合だけですよね?通常のコピペでできないような操作を行うと、MyPasteでも当然エラーになります。エラーになった場合は、"貼り付けに失敗しました。"のメッセージが表示されるはずです。
    • good
    • 3

「プロシジャというものが分からない」とのことなので、ちょっと厳しいかもしれませんが、暇つぶしに読んでみて下さい。



まず、次のマクロを標準モジュールに張り付けます。このマクロ(MyPaste)は、選択されたセルに、値で張り付けをするものです。
Sub MyPaste()
On Eror GoTo Err_fin
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone
Exit Sub
Err_fin:
MsgBox "貼り付けに失敗しました。"
End Sub

次に、ThisWorkbookの下のWorkbook_Openイベントプロシジャに下記のマクロを張り付けます。
Private Sub Workbook_Open()
Worksheets("Sheet1").Protect userinterfaceonly:=True
Application.OnKey "^v", "MyPaste"
Application.CommandBars("cell").Reset
With Application.CommandBars("cell").Controls.Add(before:=1, temporary:=True)
.Caption = "貼り付けは、こちらで!!"
.OnAction = "MyPaste"
End With
End Sub

このマクロは、まず、Sheet1に保護をかけます。保護の内容は「ユーザの操作は拒否するが、マクロからの変更は許可する」というものです。これにより、通常の操作ではペーストができなくなります。
次に「Cntl+v」で、マクロMyPasteを起動するように設定します。
さらに、セルの右クリックメニューに、「貼り付けは、こちらで!!」メニューを追加します。
これで、すべの貼り付け動作は、MyPasteで行うことになります。
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。貼り付けはこちらで!!というメニューが追加されました!
しかしながら私の力量不足なのか、貼り付けはこちらで!!というボタンを押したり、Cntl+vで
貼り付けをしようとすると 実行時エラー1004 RangeクラスのPasteSpecial メソッドが失敗しましたとでます
マクロの計算式を作る画面で、右クリック→挿入→標準モジュールでModule1というものがでてきてそこに
Sub MyPaste()
On Eror GoTo Err_fin
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone
Exit Sub
Err_fin:
MsgBox "貼り付けに失敗しました。"
End Sub

を貼り付けて、次にThisWorkbookで(General)というものをWorkbookに選びなおして、そこに
Private Sub Workbook_Open()
Worksheets("Sheet1").Protect userinterfaceonly:=True
Application.OnKey "^v", "MyPaste"
Application.CommandBars("cell").Reset
With Application.CommandBars("cell").Controls.Add(before:=1, temporary:=True)
.Caption = "貼り付けは、こちらで!!"
.OnAction = "MyPaste"
End With
End Sub

を貼り付けてやってみました。シートの名前はSheet1で間違いありません。
私の操作で何か間違いが有りましたらご教授ください・・

お礼日時:2016/05/25 22:06

自分も「シートの保護」を薦める。


それで思うようにならなければ、他の手段を検討してはどうだろう。

シートの保護で、保護や禁止できる項目はたくさんあるので、
いくつかを組み合わせることで質問にあることができると思います。
(多少の試行錯誤は覚悟してください)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
シートの保護は存じていました。しかしながら、他のシートから貼り付けを禁止にしたり、書式を変えずに
値だけ貼り付けできるようにする項目設定の組み合わせは見つかりませんでした。もしあるようであれば
ご教授いだたければ幸いです。

お礼日時:2016/05/24 21:12

★方法1


Ctrl+C,V が動作しないようにしておく、という方法です。

簡単には標準モジュールにプロシージャーを2つ置いて、
それに、Ctrl+CとVのショートカットキーを割り当てるだけです。

例えば、標準モジュールに以下があるとして。

--------------- Ctrl+C を割り当て----------
Sub Ctrl_C()
  MsgBox "Ctrl+C は使わんでね"
End Sub

--------------- Ctrl+V を割り当て----------
Sub Ctrl_V()
  MsgBox "Ctrl+V は使わんでね"
End Sub
----------------------------------------------

以上です。

★方法2

標準モジュールではなく該当のシートのモジュールに以下をコピペしてください。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
Exit Sub
Else
MsgBox "複数セルを同時に変更しないでねん。!"
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End If
End Sub

以上です。
この回答への補足あり
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
上記マクロを組んだのですが禁止にはなりませんでした・・
あと、右クリック→コピー 右クリック→貼り付けをする方にもこの方法は対応しているのでしょうか?

お礼日時:2016/05/24 21:19

別方法の提案です。


問題の生じていないシートをコピーして、コピーしたシートを「表示しない」状態にしておいて、必要に応じてそれから書式など必要な物だけを張り付けたらいかがでしょうか?
この動作をマクロ記録しておけば、起動時などに自動で修復も可能になると思います。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
その方式でも良いのですが、例えば、中央揃えになってしまっているとかちょっとした設定も全部コピーの大元から
引き継いでいたり、データが膨大になっていると毎回その作業をする、あるいはチェック漏れがあることもあるので今回
質問させていただきました。

お礼日時:2016/05/24 21:14

「シートの保護」をしたらどうですか?


作業の許可を、細かく指定できますよ。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
シートの保護は存じていました。しかしながら、他のシートから貼り付けを禁止にしたり、書式を変えずに
値だけ貼り付けできるようにする項目設定の組み合わせは見つかりませんでした。もしあるようであれば
ご教授いだたければ幸いです。

お礼日時:2016/05/24 21:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A