- ベストアンサー
AファイルからBファイルへ1回でコピーする方法
- AのファイルからBのファイルへコピーをします。Aのファイルの特定の範囲のセルをBファイルにコピーする方法について教えてください。
- AのファイルとBのファイルにはデータの登録されている形式が異なります。Aのファイルは1行にデータが登録されているのに対し、Bのファイルは2行にデータが登録されています。1回でAファイルからBファイルへコピーする方法があるか教えてください。
- 現在はBのファイルを2回開いてコピーしているのですが、1回でコピーできる方法はないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
両方のシートを変数に収めてしまうと良いかもです。 極力、ご提示の内容を使って、 Dim AWB As Workbook, ASH As Worksheet Dim BWB As Workbook, BSH As Worksheet Set AWB = Workbooks.Open("A.xlsm") Set ASH = AWB.Worksheets("Sheet1") Set BWB = Workbooks.Open("B.xls") Set ASH = AWB.Worksheets(k) ASH.Range(ASH.Cells(2, 3), ASH.Cells(2, 14)).Copy BSH.Range("C1:C200").Find("X").PasteSpecial Paste:=xlPasteAllExceptBorders, _ Operation:=xlNone, _ SkipBlanks:=False, _ Transpose:=False ASH.Range(ASH.Cells(2, 15), ASH.Cells(2, 18)).Copy BSH.Range("C1:C200").Find("Y").PasteSpecial Paste:=xlPasteAllExceptBorders, _ Operation:=xlNone, _ SkipBlanks:=False, _ Transpose:=False On Error Resume Next BWB.Save If Err.Number > 0 Then MsgBox "保存されませんでした" BWB.Close こんな感じでしょうか。 すいませんが、未検証です。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
質問がよくわからんが A1:G1の各セルに a bb c d eee f g と、入っていて Sub test01() Dim x, y As Variant x = Range("A1:C1") y = Range("D1:g1") Range("a3:C3") = x Range("a7:d7") = y End Sub を実行して 結果 A3:C3 a bb c A7:D7 d eee f g のようになる。 1セルづつ代入文を書いてなくて、2行で済む。 こういう「コード経済・節約」をしたいのか?見通しも良くなる。 シート間に跨いでもこれができると思うが。
お礼
回答ありがとうございます。 参考にさせていただきました。
お礼
ありがとうございます。
補足
条件として記載していませんでしたが、Aのファイルはオートオープンで開いているので、上記マクロを実行すると、おかしな状況に陥りました。 Set AWB = Workbooks.Open("A.xlsm") Set ASH = AWB.Worksheets("Sheet1") の部分で2回同じファイルを読む設定になってしまう為です。 Aのファイルを異なるファイルにし、 Set BWB = Workbooks.Open("B.xls") Set ASH = AWB.Worksheets(k) は Set BWB = Workbooks.Open("B.xls") Set BSH = BWB.Worksheets(k) とすることで対応出来ました。