電子書籍の厳選無料作品が豊富!

別ファイルから値のみをコピーしたいのです。

BookA.xlsmのシートSheetAへBookB.xlsmのSheetBへ値コピーをしたいのです。

該当ファイルは開いている状態で下記のVBAだときちんとコピーされます。

Workbooks("BookA.xlsm").Sheets("SheetA").Range("E21:K370").Value = Workbooks("BookB.xlsm").Sheets("SheetB").Range("E21:K370").Value

同じようにRangeの部分をA1書式からR1C1書式に書き換えるとコピーされません。
Workbooks("BookA.xlsm").Sheets("SheetA").Range(Cells(21, 5), Cells(370, 11)).Value = Workbooks("BookB.xlsm").Sheets("SheetB").Range(Cells(21, 5), Cells(370, 11)).Value

どこがおかしいのでしょうか?

実際はいくつかのファイルから複数の場所をコピーしないといけないので、R1C1書式で指定したいのですが、どうしたらいいでしょうか?

A 回答 (4件)

range(Cells(w,x),cells(y,z))の記述が気になります。


cellsの前に「Workbooks("BookB.xlsm").Sheets("SheetB").」のようにつけなければセル情報が正しく取れない気がします。

なお、私はvbaについては独学なので質問者さんの例のようなやり方を試したことがなく、普段は文字列型の変数に”R1:C1”の文字列を組み立てて代入してrange(str変数)のようにしています。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>cellsの前に「Workbooks("BookB.xlsm").Sheets("SheetB").」のようにつけなければセル情報が正しく取れない気がします。
A1書式のときは要らないのに、R1C1書式の時に必要なのかはわかりませんが、cellsの前につけたらできました。

ありがとうございます。

お礼日時:2020/07/24 11:51

こんにちは



原因については既回答でお分かりのことと思いますので、以下は蛇足ですが…

セル範囲の指定に、
 Range(Cells( ), Cells( ))
形式を用いると、ブック・シートの指定回数が多くなるため、with構文などを利用することも有効ですが、一度だけの記述に、毎回変数に代入したりwithで指定するのも面倒なので、
Workbooks("BookA.xlsm").Sheets("SheetA").Cells(21, 5).Resize(350, 7).Value = _
Workbooks("BookB.xlsm").Sheets("SheetB").Cells(r, c).Resize(350, 7).Value
のような記述法を用いることで、指定を簡略化できるとともに、左辺と右辺でのセル範囲のサイズ違いを防止することも容易になります。

ご参考まで。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

Resizeの使い方がよくわからないので、この機会に勉強してみます。

ありがとうございました。

お礼日時:2020/07/24 14:03

dim ws as worksheet



set ws = Workbooks("BookB.xlsm").Sheets("SheetB")

with Workbooks("BookA.xlsm").Sheets("SheetA")
.Range(.Cells(21, 5), .Cells(370, 11)).Value = ws.Range(ws.Cells(21, 5), ws.Cells(370, 11)).Value
emd with

未検証なのでミスってたらごめんなさい。(因みに私も独学・・・と言いたいですが、サイトや参考書他の回答者のコードをパクってる悪い人です)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

set ws=~として、cellsの前にws.cells~のようにしたら、できました。

with ~ end withを使う手もありますね。

お礼日時:2020/07/24 11:53

(VBAでなく)Excelの機能で、コピーしたいシートのシート見出しを右クリックしメニューの「移動またはコピー」を実行し、ダイアログボックスの「移動先ブック名」リストで「(新しいブック)」を選択し、(コピーの場合「コピーを作成する」チェックボックスをオンに、移動ならオフのまま)「OK」で選択したシートだけが新しいブックになる。


Sub Sample2()
Sheets("*").Copy
End Sub

http://officetanaka.net/excel/vba/tips/tips170.htm
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

A1書式からR1C1書式に書き換える方法を知りたいのですが...

お礼日時:2020/07/24 09:51

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