|
|
| Excel VBA Macro ・ コピー ・ FAQ |
|
開いてないブックのセルの内容をコピーして別ブックのシートに貼り付けるには?
|
|
|
|
Question 73.1 |
|
 |
 |
|
|
|
AとBのブックがあります。 BのA1:Z50の内容をBを開かずに、Aのブックのシートに貼り付けることはできますか??
|
|
Answer |
Copyright (C) 2005.5.9 永井善王 |
|
|
♪とんちんかんちん一休さん♪ と歌が聞こえてきそうですが、そうしたい事情がお有りなのでしょうね。
セルの内容をコピーするためには、通常、それを含むブックが開いている必要があります。
ご質問文が非常に短く、セルの内容をコピーして何を貼り付けしたいのか、つまり、「すべて」なのか「値」なのか等、貼り付ける部分が分かりません。
よって、以下の回答は「値」を貼り付けることにして、そのためのマクロをお示しします。
Sub 開いてないブックのセルの内容をコピーして値を貼り付ける()
10 コピー元パス = "BookB.xls"
20 Range("A1").FormulaR1C1 = "=[" & コピー元パス & "]Sheet1!RC"
30 Range("A1").Copy
40 Range("A1:Z50").PasteSpecial Paste:=xlPasteFormulas
50 Selection.Copy
60 Selection.PasteSpecial Paste:=xlPasteValues
End Sub
このマクロは、BookA.xlsに作成しておきます。各行のコードの意味を簡単に解説します。
10 ・・ コピー元へのパスをブック名を含めて指定。この場合 BookA.xlsと同フォルダにあるとしてフォルダパスを省略。
20 ・・ BookA.xlsのA1セルへ数式をセット。 =[BookB.xls]Sheet1!A1
30〜40 ・・ A1セルをコピーして、A1:Z50セル範囲へ数式を貼り付ける
50〜60 ・・ 選択中のセル範囲(A1:Z50)をコピーして、選択中のセル範囲へ値を貼り付ける
貼り付ける部分を変更したければ、60行目の PasteSpecialメソッドの引数Pasteの指定を変更します。
なお、頭を柔らかくして考えれば、他にも色々な方法があろうかと思われます。 もし暇があれば、パズルするつもりで考えてみると楽しいかも知れませんね。
|
|
|
|
| |
|
|