2つの異なるワークブックから2つのワークシートを結合します。以下は私のコードですが、SQLを実行したときにエラー 'JOIN式がサポートされていません'が発生しました。2つの異なるワークブックから2つのワークシートを結合するときに、結合式がサポートされていません。
Sub RunSELECT()
Dim cn As Object, rs As Object, output As String, sql As String
Dim pre_reviewed_file As String, cond As String
Dim fso As Object, outfile As String, file_obj As Object
Set fso = CreateObject("Scripting.FileSystemObject")
outfile = "C:\Users\ZhouK\Desktop\offline comments\offline-comments\result.txt"
Set file_obj = fso.CreateTextFile(outfile, True)
pre_reviewed_file = "56022473AML2002 OFFLINE listings 20161010 - reviewed.xls"
'MsgBox ActiveWorkbook.FullName
'---Connecting to the Data Source---
Set cn = CreateObject("ADODB.Connection")
With cn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ";" & _
"Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
.Open
End With
cond = "1=1"
With ActiveWorkbook.Sheets("LIS01").Rows(3)
For i = 1 To 24
cond = cond & " and a.[" & .Cells(i).Value & "]=b.[" & .Cells(i).Value & "]"
Next
End With
sheet_name = "LIS01"
'---Run the SQL SELECT Query---
sql = "SELECT b.[COMMENTS] FROM [" & sheet_name & "$A3:AZ3000] a left join [Excel 12.0;HDR=Yes;Database=" & ActiveWorkbook.Path & _
"\" & pre_reviewed_file & ";].[" & sheet_name & "$A3:AZ3000] b on " & cond
file_obj.Write (sql)
file_obj.Close
Set rs = cn.Execute(sql)
ActiveWorkbook.Sheets("me").Range("A1").CopyFromRecordset rs
'Do
'output = output & rs(0) & ";" & rs(1) & ";" & rs(2) & vbNewLine
'Debug.Print rs(0); ";" & rs(1) & ";" & rs(2)
'rs.Movenext
'Loop Until rs.EOF
'MsgBox output
'---Clean up---
rs.Close
cn.Close
Set cn = Nothing
Set rs = Nothing
End Sub
本当のSQLは、私は本当に間違っているどの部分かわからない
select b.[COMMENTS]
from [LIS01$A3:AZ3000] a
left join [Excel 12.0;HDR=Yes;Database=C:\Users\ZhouK\Desktop\offline comments\offline-comments\56022473AML2002 OFFLINE listings 20161010 - reviewed.xls;].[LIS01$A3:AZ3000] b
on 1=1 and a.[Study Site Identifier]=b.[Study Site Identifier]
and a.[Unique Subject Identifier]=b.[Unique Subject Identifier]
and a.[CM Record Number]=b.[CM Record Number]
and a.[Medication]=b.[Medication]
and a.[Indication]=b.[Indication]
and a.[AE-Date-Term1]=b.[AE-Date-Term1] and a.[AE-Date-Term2]=b.[AE-Date-Term2] and a.[AE-Date-Term3]=b.[AE-Date-Term3]
and a.[AE-Date-Term4]=b.[AE-Date-Term4] and a.[AE-Date-Term5]=b.[AE-Date-Term5]
and a.[MH-Date-Term1]=b.[MH-Date-Term1] and a.[MH-Date-Term2]=b.[MH-Date-Term2] and a.[MH-Date-Term3]=b.[MH-Date-Term3]
and a.[MH-Date-Term4]=b.[MH-Date-Term4] and a.[MH-Date-Term5]=b.[MH-Date-Term5]
and a.[Prohylaxis or Other]=b.[Prohylaxis or Other]
and a.[Dose]=b.[Dose] and a.[Dose Unit]=b.[Dose Unit]
and a.[Dose Form]=b.[Dose Form] and a.[Frequency]=b.[Frequency]
and a.[Route]=b.[Route] and a.[Ongoing]=b.[Ongoing]
and a.[CM Start Date]=b.[CM Start Date] and a.[CM End Date]=b.[CM End Date]
です。私のコードを見ていただけますか?
ステップ」といったんこの文をヒットすると、直前のウィンドウに "?cond"と照会してreturnキーを押します。そうすれば、実際に構築されたSQL文字列と実際のものとを比較することができます – user3598756
@ user3598756ありがとうございます。私は本当に報道の自由が何を意味するのか分かりません。バックスペースを押しますか?直下のウィンドウで – Kai
と入力すると、 '?cond'と入力して、このクエリの結果をクエリのすぐ下に表示するためにreturnキーを押す必要があります。 – user3598756