開いてないブックのセルの内容をコピーして別ブックのシートに貼り付けるには?
Question 73.1 Previous Next
AとBのブックがあります。 BのA1:Z50の内容をBを開かずに、Aのブックのシートに貼り付けることはできますか??
Answer   Copyright (C) 2005.5.9 永井善王
♪とんちんかんちん一休さん♪ と歌が聞こえてきそうですが、そうしたい事情がお有りなのでしょうね。
セルの内容をコピーするためには、通常、それを含むブックが開いている必要があります。
ご質問文が非常に短く、セルの
内容をコピーして何を貼り付けしたいのか、つまり、「すべて」なのか「値」なのか等、貼り付ける部分が分かりません。
よって、以下の回答は「値」を貼り付けることにして、そのためのマクロをお示しします。 school
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の指定を変更します。
なお、頭を柔らかくして考えれば、他にも色々な方法があろうかと思われます。 もし暇があれば、パズルするつもりで考えてみると楽しいかも知れませんね。

 

Excel VBA Macro