元のブックの情報と別のブックの情報をマージし、元のブックに上書きする方法を模索しています。
------以下、前置き--------
前回の質問内容:
http://oshiete1.goo.ne.jp/qa5346942.html
にて、シート間でデータを見ながらマージすることはできるようになりました。ありがとうございます。
以下はブック間ではなく、同ブック内の隣のシート間でやりとりする作業をマクロにしたものです。
1枚目のシートにある情報:
A B C D E
ユーザー名 電話番号
B川B太 0120-002
A山A郎 0120-001 A市在住
C岡C介 0120-003
2枚目のシートにある情報:
A B C D E
ユーザー名 電話番号 項目
F崎F二 0120-006
G田G夫 0120-007 G県GG村
H村H子 0120-008
C岡C介 0120-003 CC村
B川B太 0120-002 東京都B市
↓
出力結果(1枚目のシート):
A B C D E
B川B太 0120-002 東京都B市
A山A郎 0120-001 A市在住
C岡C介 0120-003 CC村
F崎F二 0120-006
G田G夫 0120-007 G県GG村
H村H子 0120-008
で、皆様の助けを得て以下のマクロを書くまではできました。
Sub test01()
Columns("H:CZ").Select
Selection.ColumnWidth = 0
Dim sh1 As Worksheet, sh2 As Worksheet
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
'--
d1 = sh1.Range("a65536").End(xlUp).Row
d2 = sh2.Range("a65536").End(xlUp).Row
k = 2
'---
For i = 2 To d1
sh1.Cells(k, "A") = sh1.Cells(i, "A")
sh1.Cells(k, "C") = sh1.Cells(i, "C")
sh1.Cells(k, "E") = sh1.Cells(i, "E")
k = k + 1
For j = 2 To d2
If sh2.Cells(j, "J") = "" Then
If sh2.Cells(j, "A") = sh1.Cells(i, "A") Then
If sh2.Cells(j, "C") = sh1.Cells(i, "C") Then
sh1.Cells(k - 1, "E") = sh2.Cells(j, "E")
sh2.Cells(j, "J") = "Y1"
Else
sh1.Cells(k, "A") = sh2.Cells(j, "A")
sh1.Cells(k, "C") = sh2.Cells(j, "C")
sh1.Cells(k, "E") = sh2.Cells(j, "E")
k = k + 1
End If
Else
End If
End If
Next j
Next i
'---
For j = 2 To d2
If sh2.Cells(j, "J") = "Y1" Then
Else
sh1.Cells(k, "A") = sh2.Cells(j, "A")
sh1.Cells(k, "C") = sh2.Cells(j, "C")
sh1.Cells(k, "E") = sh2.Cells(j, "E")
k = k + 1
End If
Next j
End Sub
------前置き終わり--------
今回やりたいのは、これを同ブック内の隣同士のシートではなく、別ブックのシートから情報を拾ってきたいのです。
つまり、
元ブック(このシート上部にマクロ実行ボタンを置きます)の現在のシートにある情報:
A B C D E
ユーザー名 電話番号
B川B太 0120-002
A山A郎 0120-001 A市在住
C岡C介 0120-003
マクロ実行時にダイアログで指定するブック(シートは最初の1枚だけです)にある情報:
A B C D E
ユーザー名 電話番号 項目
F崎F二 0120-006
G田G夫 0120-007 G県GG村
H村H子 0120-008
C岡C介 0120-003 CC村
B川B太 0120-002 東京都B市
↓
出力結果(元ブックの元シート):
A B C D E
B川B太 0120-002 東京都B市
A山A郎 0120-001 A市在住
C岡C介 0120-003 CC村
F崎F二 0120-006
G田G夫 0120-007 G県GG村
H村H子 0120-008
ダイアログを表示させてファイルを選択するのは分かるのですが、その後ファイル同士を読みながら作業を進めるにはどうすればよいでしょうか・・・?
また丸投げですみませんが、なにとぞご教示頂ければと思います。
お礼
お礼が遅れました。 結局、ブック間を往復しながらのデータのやりとりはやめて、必要なシートを1つのブックに集めてしまってから作業をする方法で解決しました。 ご意見ありがとうございます。シート間でのやりとりができるのであればこれをブック間に拡張するのはもう目の前だと思いますので、もう少し精進します・・・。