質問編集履歴

1

完成形コードの追記

2017/08/28 14:56

投稿

zorac
zorac

スコア42

test CHANGED
File without changes
test CHANGED
@@ -33,3 +33,69 @@
33
33
  VBAを使わなければどうにもならないという事であれば、どういう方法で処理するのが簡潔でしょうか。
34
34
 
35
35
  Pivotが使えるものはPivotで処理してコピーするといったアイデアがあれば是非教えて下さい。
36
+
37
+
38
+
39
+ ###下記コードで解決しました。
40
+
41
+ ```VBA
42
+
43
+ Public Sub MergeTables()
44
+
45
+ Dim con As Object
46
+
47
+ Dim res As Object
48
+
49
+
50
+
51
+ Set con = CreateObject("ADODB.Connection")
52
+
53
+ Set res = CreateObject("ADODB.Recordset")
54
+
55
+ con.Provider = "Microsoft.ACE.OLEDB.12.0"
56
+
57
+
58
+
59
+ con.Properties("Extended Properties") = "Excel 12.0;HDR=YES;IMEX=1"
60
+
61
+ con.Open ThisWorkbook.FullName
62
+
63
+
64
+
65
+ Dim SQL As String
66
+
67
+
68
+
69
+ SQL = SQL & "select A.*,B.指標A,B.指標B,B.指標C,C.ランク,C.コメント "
70
+
71
+ SQL = SQL & "from ([Sheet1$] as A " '3つ以上の表をjoinする場合は括弧で囲まないと
72
+
73
+ SQL = SQL & "left join [Sheet2$] as B on A.店舗コード = B.店舗コード) " '「構文エラー:演算子がありません」となる
74
+
75
+ SQL = SQL & "left join [Sheet3$] as C on A.店舗コード = C.店舗コード"
76
+
77
+
78
+
79
+ res.Open SQL, con, 1, 1
80
+
81
+
82
+
83
+ Application.ScreenUpdating = False
84
+
85
+
86
+
87
+ Worksheets("Sheet4").Range("A2").CopyFromRecordset res
88
+
89
+
90
+
91
+ Application.ScreenUpdating = True
92
+
93
+
94
+
95
+ res.Close
96
+
97
+ con.Close
98
+
99
+ End Sub
100
+
101
+ ```