プロが教える店舗&オフィスのセキュリティ対策術

エクセルで書式のコピー貼り付けを行うと貼り付けられた部分の書式が変更されてしまうため、コピーと貼り付けができないようにするため、ネットで調べてコードを試していました。(結局実力がないためできませんでした。)あとで気がついたのですが、シート上でショートカットメニューを使ってコピー貼り付けを行ってみたら、その中の貼り付けのアイコンと文字だけが薄くなっていて貼り付けができない状態になっていました。エクセルの他の場所にある貼り付けアイコンやショートカットキー(Ctr+V)等では正常に行えます。ショートカットメニュー内の貼り付けはどんなコードを実行すれば有効にして回復させることができるのでしょうか。よろしくお願いいたします。(エクセル2007を使用です。)

A 回答 (3件)

>ショートカットメニュー内の貼り付けはどんなコードを実行すれば有効にして回復させることができるのでしょうか。


他にショートカットメニューをカスタマイズしてなければ、CommandBarごとリセットするのが簡単です。
Sub test()
  Dim cb As CommandBar
  
  For Each cb In Application.CommandBars
    Select Case cb.Name
    Case "Cell", "Row", "Column"
      cb.Reset
    End Select
  Next
End Sub
    • good
    • 0
この回答へのお礼

質問以来所用で今帰宅し、早々に回答を見たら2件ありました。まず上に表示されていたend_Uさんのからと思い試してみたらヤッター!という感じです。一発で回復しました。最初はオフィス関係のソフトのカテゴリーに質問しようかと思いましたが少し調べたらマウスが壊れているはずという過去回答をみて自分のは壊れていないのは確かであったので、プログラム的なものと思いこちらのカテゴリーに尋ねました。非常に助かりました。ありがとうございます。今後の参考のためよろしければお伺いしたいのですが、このマクロのリセットはどこまでを対象として使えるのでしょうか。ショートカットメニューにある全項目、またはホーム>クリップボード内にあるコマンドにも有効なのでしょうか。

お礼日時:2010/11/03 01:10

>このマクロのリセットはどこまでを対象として使えるのでしょうか。


>ショートカットメニューにある全項目、
>またはホーム>クリップボード内にあるコマンドにも有効なのでしょうか。

2007からメニューコマンドのインターフェイスが「リボン」に変わりましたから、
その「リボン」に対してはCommandBar制御のマクロは使えません。
∴『ホーム>クリップボード内にあるコマンド』には無効です。

従来のCommandBarは下位バージョンとの操作互換の為残っています。
その中で、マウス右クリックでポップアップするメニューは、
そのまま従来のCommandBarが使われています。
このCommandBarに対しては前述のマクロは有効です。
つまり、Type = msoBarTypePopupのCommandBarは、2007でも制御可能です。
以下はそのCommandBarsを列挙するサンプルです。

Sub test()
  Dim cb As CommandBar
  Dim i As Long
  Dim v(1 To 70, 1 To 3)
  
  v(1, 1) = "index"
  v(1, 2) = "name"
  v(1, 3) = "namelocal"
  i = 1
  For Each cb In Application.CommandBars
    With cb
      If .Type = msoBarTypePopup Then
        i = i + 1
        v(i, 1) = .Index
        v(i, 2) = .Name
        v(i, 3) = .NameLocal
      End If
    End With
  Next
  Sheets.Add.Range("A1:C1").Resize(i).Value = v
End Sub

『セル』を選択して右クリックでポップアップするメニューはCommandBars("Cell")です。
同様に『列』選択時はCommandBars("Column")。
『行』選択時はCommandBars("Row")。
それぞれ2個ずつあるのは「標準」ウィンドウ用と「改ページプレビュー」用です。
ご質問の状況「シート上でショートカットメニュー...貼り付けのアイコンと文字だけが薄く」...
から、この"Cell"、"Column"、"Row"に対してリセットかければ良いかな、と判断しました。
    • good
    • 0
この回答へのお礼

事務局に連絡を取り追加回答までして頂き、お手数をおかけして申し訳ございませんでした。
回答をみて試した後うまくいったので気持ちがどこかに飛んで行ってしまい、すぐにお礼を書きホッとしていました。お礼の欄に再質問を書く自分が恥ずかしいです。
右クリックメニューに対して有効ということが分かり、又不具合があったら使わせていただこうと大切に保存しておきます。大変ありがとうございました。

お礼日時:2010/11/05 16:37

標準モジュールに


Sub test01()

MsgBox Application.CommandBars("edit").Controls(4).Caption
Application.CommandBars("edit").Controls(4).Enabled = False

End Sub
を実行したような状態になっているのかな。編集メニューのコピーがうすい文字にグレイアウトする。
それなら・・・.Enabled = Falseの部分を・・・.Enabled = True にして実行してみては。
回答がなかなか付いてないが、もっと難しい問題かもしれないが。
    • good
    • 0
この回答へのお礼

お忙しいところ早々に回答をいただきありがとうございました。回答表示の上から順にと思いend_Uさんのを試してみたら直ってしまい、前の不具合の状態にする方法もわからないため、imogasiさんのを試す方法が無くなってしまいました。申し訳ありません。本当にありがとうございました。又の質問の際はよろしくお願いいたします。

お礼日時:2010/11/03 01:17

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