• ベストアンサー

エクセルVBAでコピーして 手動で貼り付け 

こん○○は 初心者であちこちからコードをコピペしてなんとかつなぎ合わせているレベルです。 エクセル2002 OS XP Sub copy() i = Worksheets(3).Range("I2")      'I2に適当な数字が入ってる i = i + 1 左上 = "G1" '選択する範囲の左上セル 右下 = "H" & i '   〃   右下セル 範囲 = 左上 & ":" & 右下 Worksheets(3).Range(範囲).copy_ Worksheets(3).Range("n1").PasteSpecial Paste:=xlPasteValues i = (i + 1) / 2 左上2 = "N1" 右下2 = "O" & i 範囲2 = 左上2 & ":" & 右下2 Worksheets(3).Range(範囲2).copy End Sub というコードでコピーした状態にした後手動で他のエクセルやテキストに貼り付けようとしています。ただしシート3は Private Sub auto_Open() ActiveWorkbook.Unprotect Worksheets("Sheet1").Visible = False Worksheets("Sheet3").Visible = False ActiveWorkbook.Protect End Sub でみえなくしています。 こうすると他のエクセルに貼り付けると 貼り付け先のシートが消えてしまいます。消えないようにしたいのですが。 なんとかお知恵を拝借できませんでしょうか?よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

Sheet1,Sheet3 とも表示状態にして Sub test01() Worksheets("Sheet3").Range("B2").Copy Worksheets("sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues End Sub を実行するとSheet3のB2セル(パターン色を設定した)の値が、Sheet1のA1セルにコピーされました(セルパターン色は映りません。) >質問のWorksheets(3).Range(範囲).copy_ Worksheets(3).Range("n1").PasteSpecial Paste:=xlPasteValues と、この部分が少し違うようですすが。 ーー Sheet3を書式ーシートー表示しないにして、上記のまま実行しましたが、同じく値だけコピーされます。 ーーー Sheet3を非表示にして Sub Macro1() Sheets("Sheet3").Copy Before:=Sheets(1) End Sub を実行すると、シート(タブ)は現れません。コピー元の非表示を受け継ぐようです。 書式ーシートー再表示でSheet3(2) が表示するシートの中にSheet3とともにリストされています。 こういう点を参考に。 コピーで出来た分を表示すすVBAを入れるか、Sheet3をVBAで表示してVBAでコピーし、Sheet3を非表示にするVBAを入れるかになるでしょう。

suisouoku
質問者

お礼

>Sheet3をVBAで表示してVBAでコピーし、Sheet3を非表示にする にて解決しました。ありがとうございます。 ところで、ためしにいろいろ条件を変えて貼り付けたところ もとのコードでシートが消えなくなりました、なにか不具合があったのかもしれません。 どうもありがとうございました。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

試していませんので、はずれかも知れませんが・・・ 「形式を選択して貼り付け」-「値のみ」でペーストしても消えてしまうでしょうか?(消えないとすると、もとのシートが非表示なのが原因と思われる) マクロ側でなんとかするなら、 スクリーンアップデートを一旦falseにしておいて、Sheet3を表示してコピー その後に非表示にする。 ・・・で対処できないかな?

suisouoku
質問者

お礼

すばやいご回答ありがとうございます。 なんとなくわかりました。

関連するQ&A

専門家に質問してみよう