
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
以上、よろしくお願いします。
No.3ベストアンサー
- 回答日時:
ThisWorkbook 等の自動実行イベントに
Private Sub Workbook_Open()
With Sheets("貼り付け先シート")
.Unprotect
'保護されたシートでマクロを実行するお呪い!
.Protect UserInterfaceOnly:=True
End With
End Sub
ご回答いただきありがとうございます。
教えて頂いた方法を試したところ、クリップボードからデータを貼り付けることが出来ました!
この方法の場合、マクロが「標準モジュール」と「ThisWorkbook」の2箇所に分かれるため、できれば1つのマクロで完結させたいのですが無理があるのでしょうか?
No.5
- 回答日時:
>できれば1つのマクロで完結させたいのですが無理があるのでしょうか?
一つのマクロで完結させるなら、処理開始前に保護解除をして、処理の終了時点で保護をする事になります。
いままでのプログラムの中の、保護解除や保護のタイミングを変えるだけで済みます。
ThisWorkbookモジュールではなくて、同じモジュールの中に別のプロシージャを書く方法もあります。
Auto_Open()
この場合、別のブックから呼び出された場合、実行されないので、そのような使い方がされる場合には適していません。
http://www.relief.jp/itnote/archives/001502.php
ありがとうございました。
マクロを一つにまとめる件、今日のところはうまくできなかったのですが、いくつかやり方を変えて試してみたいと思います。
No.4
- 回答日時:
#2です。
クリップボードのデータ取得は
Dim CB As New DataObject
Dim Dt As String
With CB
.GetFromClipboard
Dt = .GetText
End With
でできます。
が、#3さんの方法がよさそうですね。
No.1
- 回答日時:
このやり方ではダメですか?
「1.シート保護解除」→「2.クリップボードにコピー」→「3.貼り付け」→「4.シート保護」
Sub test()
Sheets("貼り付け先シート").Unprotect
Range("A1:C3").Copy
Sheets("貼り付け先シート").Range("A1").PasteSpecial Paste:=xlValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("貼り付け先シート").Protect
End Sub
この回答への補足
ご返答いただきありがとうございます。
きちんとご説明できていなかったのですが、コピー元セル範囲は決まっておらず利用者が指定する必要があるため、マクロの中でRange("A1:C3").Copyといった定型的な指定が出来ないのです。
今のところ、シート保護と貼り付けを別々のマクロにする位しか回避策が思いつきません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excelで保護のかかったシートのコピー
Excel(エクセル)
-
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
Excel 数式の保護をしたセルを保護のままコピーする方法
Excel(エクセル)
-
-
4
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
5
Excelシートの保護(図の挿入だけ許可)
Excel(エクセル)
-
6
エクセルで複数のシートのクリアをしたいです
Excel(エクセル)
-
7
シートの保護のあとセルの列、幅を動かせるようにしたい
Excel(エクセル)
-
8
エクセル 保護/非保護混在セルを一気にコピペ
Excel(エクセル)
-
9
ロックしたセルのコピー&貼り付け
Excel(エクセル)
-
10
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
11
Excel:マクロを消す方法教えてください。
Excel(エクセル)
-
12
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
13
《エクセルVBA》「他の人が該当ファイルを使用中の場合」の処理
Excel(エクセル)
-
14
EXCELのSheet番号って変更できる!?
Visual Basic(VBA)
-
15
VBAでダブルコーテーション入りの数式をセルにセットしたい
Visual Basic(VBA)
-
16
EXCEL シート保護するとマクロが正常動作しない
Excel(エクセル)
-
17
エクセルVBAで値の貼り付けができない
その他(Microsoft Office)
-
18
「選択範囲を解除してアクティブセルを選択」をマクロで行うにはどうすればよいでしょうか
Excel(エクセル)
-
19
すでにコピーした情報を貼り付けたらイベントを発生
PowerPoint(パワーポイント)
-
20
エクセルでシートの保護をかけたまま マクロで行コピーしたものを行挿入する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
XL:BeforeDoubleClickが動かない
-
別のシートを参照して計算する方法
-
ExcelVBA シート名を複数セルか...
-
ExcelのVBAのマクロで他のシー...
-
実行時エラー1004「Select メソ...
-
ユーザーフォームに入力したデ...
-
エクセルVBAで。
-
特定の文字を含むシートだけマ...
-
VBA 指定した回数分、別シート...
-
エクセルのマクロで条件一致の...
-
エクセルVBA Ifでシート名が合...
-
VBA 検索して一致したセル...
-
実行時エラー'1004': WorkSheet...
-
excelのマクロで該当処理できな...
-
【VBA】指定した検索条件に一致...
-
【Excel VBA】シート表示、非表...
-
【VBA】色のついたシート名を取得
-
EXCELVBAを使ってシートを一定...
-
EXCEL VBAで複数シートから該当...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
VBA 存在しないシートを選...
-
エクセルで通し番号を入れてチ...
-
VBA 検索して一致したセル...
-
XL:BeforeDoubleClickが動かない
-
VBA 指定した回数分、別シート...
-
VBAマクロでシートコピーした新...
-
シートが保護されている状態で...
-
ブック名、シート名を他のモジ...
-
【VBA】全ての複数シートから指...
-
別のシートから値を取得するとき
-
ExcelのVBAのマクロで他のシー...
-
Excel チェックボックスにチェ...
おすすめ情報