別ファイルから値のみをコピーしたいのです。
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書式で指定したいのですが、どうしたらいいでしょうか?
No.2ベストアンサー
- 回答日時:
range(Cells(w,x),cells(y,z))の記述が気になります。
cellsの前に「Workbooks("BookB.xlsm").Sheets("SheetB").」のようにつけなければセル情報が正しく取れない気がします。
なお、私はvbaについては独学なので質問者さんの例のようなやり方を試したことがなく、普段は文字列型の変数に”R1:C1”の文字列を組み立てて代入してrange(str変数)のようにしています。
回答ありがとうございます。
>cellsの前に「Workbooks("BookB.xlsm").Sheets("SheetB").」のようにつけなければセル情報が正しく取れない気がします。
A1書式のときは要らないのに、R1C1書式の時に必要なのかはわかりませんが、cellsの前につけたらできました。
ありがとうございます。
No.4
- 回答日時:
こんにちは
原因については既回答でお分かりのことと思いますので、以下は蛇足ですが…
セル範囲の指定に、
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
のような記述法を用いることで、指定を簡略化できるとともに、左辺と右辺でのセル範囲のサイズ違いを防止することも容易になります。
ご参考まで。
No.3
- 回答日時:
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
未検証なのでミスってたらごめんなさい。(因みに私も独学・・・と言いたいですが、サイトや参考書他の回答者のコードをパクってる悪い人です)
回答ありがとうございます。
set ws=~として、cellsの前にws.cells~のようにしたら、できました。
with ~ end withを使う手もありますね。
No.1
- 回答日時:
(VBAでなく)Excelの機能で、コピーしたいシートのシート見出しを右クリックしメニューの「移動またはコピー」を実行し、ダイアログボックスの「移動先ブック名」リストで「(新しいブック)」を選択し、(コピーの場合「コピーを作成する」チェックボックスをオンに、移動ならオフのまま)「OK」で選択したシートだけが新しいブックになる。
Sub Sample2()
Sheets("*").Copy
End Sub
http://officetanaka.net/excel/vba/tips/tips170.htm
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/26 09:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/01/27 13:15
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/26 12:00
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAが途中で止まります
-
VBA シートをコピーする際に Co...
-
ワイルドカード「*」を使うとう...
-
別ブックをダイアログボックス...
-
ACCESSVBA からExcelの他ブック...
-
VBAで別ブックのシートを指定し...
-
VBA コードを実行すると画面が...
-
【ExcelVBA】インデックスが有...
-
エクセルマクロで任意のファイ...
-
EXCEL VBA で現在開いているブ...
-
別ブックの列同士の値が一致し...
-
エクセルVBAでテキストボックス...
-
Excel VBAでRangeの指定をA1書...
-
エクセル VBA 他シートの行を選...
-
Excel-VBAでのファイルの開き方
-
【ExcelVBA】zip圧縮されたCSV...
-
VBS Bookを閉じるコード
-
VBA 別ブックからコピペしたい...
-
複数ブックから一つのシートに...
-
エクセルのVBAコードについて教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
別ブックをダイアログボックス...
-
VBAで別ブックのシートを指定し...
-
Excelのマクロについて教えてく...
-
VBA 別ブックからコピペしたい...
-
Excelのマクロについて教えてく...
-
vbaでvbaProjectのパスワード解...
-
VBA コードを実行すると画面が...
-
【マクロ】アクティブセルにブ...
-
Excelのマクロについて教えてく...
-
VBAで別のブックにシートをコピ...
-
VBS Bookを閉じるコード
-
Excelのマクロについて教えてく...
-
【ExcelVBA】zip圧縮されたCSV...
-
【ExcelVBA】インデックスが有...
-
ACCESSVBA からExcelの他ブック...
-
vbaで他のブックに転記したい。...
-
【マクロ】違うフォルダにある...
おすすめ情報