• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AファイルからBファイルへ1回でコピーする方法)

AファイルからBファイルへ1回でコピーする方法

このQ&Aのポイント
  • AのファイルからBのファイルへコピーをします。Aのファイルの特定の範囲のセルをBファイルにコピーする方法について教えてください。
  • AのファイルとBのファイルにはデータの登録されている形式が異なります。Aのファイルは1行にデータが登録されているのに対し、Bのファイルは2行にデータが登録されています。1回でAファイルからBファイルへコピーする方法があるか教えてください。
  • 現在はBのファイルを2回開いてコピーしているのですが、1回でコピーできる方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

両方のシートを変数に収めてしまうと良いかもです。 極力、ご提示の内容を使って、 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 こんな感じでしょうか。 すいませんが、未検証です。

3620313
質問者

お礼

ありがとうございます。

3620313
質問者

補足

条件として記載していませんでしたが、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) とすることで対応出来ました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問がよくわからんが 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行で済む。 こういう「コード経済・節約」をしたいのか?見通しも良くなる。 シート間に跨いでもこれができると思うが。

3620313
質問者

お礼

回答ありがとうございます。 参考にさせていただきました。

関連するQ&A