Vba 将结果从数据库拉入Excel
我无法让这个代码工作。我第一次运行它时,它会提示我输入密码,每次宏都会完成,但它不会将结果拉入Vba 将结果从数据库拉入Excel,vba,excel,Vba,Excel,我无法让这个代码工作。我第一次运行它时,它会提示我输入密码,每次宏都会完成,但它不会将结果拉入sheet1。我能在这里做什么 Sub Update() ThisWorkbook.Sheets("sheet1").Activate ThisWorkbook.Sheets("sheet1").Range("A1").Select Dim strStDt As String Dim strEnDt As String Dim strSQL As String
sheet1
。我能在这里做什么
Sub Update()
ThisWorkbook.Sheets("sheet1").Activate
ThisWorkbook.Sheets("sheet1").Range("A1").Select
Dim strStDt As String
Dim strEnDt As String
Dim strSQL As String
strStDt = ThisWorkbook.Worksheets("lookup").Range("B6").Value
strEnDt = ThisWorkbook.Worksheets("lookup").Range("B5").Value
strSQL = ""
strSQL = strSQL & "SELECT tkt.cntry_istto"
strSQL = strSQL & ",tkt.pod"
strSQL = strSQL & " FROM INTGY.GRUIP tkt"
strSQL = strSQL & " Where tky.year_month_nbr between " & strStDt & " and " & strEnDt
ThisWorkbook.Sheets("sheet1").Activate
ThisWorkbook.Sheets("sheet1").Range("A1").Select
With ActiveWorkbook.Connections(1).ODBCConnection
.BackgroundQuery = True
.Connection = "ODBC;DSN=#EDXX;UID=;;DATABASE=INTGY; AUTHENTICATION=;"
.CommandText = strSQL
.RefreshOnFileOpen = False
.SavePassword = False
.SourceConnectionFile = ""
.SourceDataFile = ""
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
.Refresh
End With
End Sub
您是否验证了在查询中正确输入了strSQL?使用ActiveWorkbook.Connections(1.ODBCConnection)将
Msgbox strSQL
放在之前,并确保它按预期显示
此外,所有这些:
strSQL = ""
strSQL = strSQL & "SELECT tkt.cntry_istto"
strSQL = strSQL & ",tkt.pod"
strSQL = strSQL & " FROM INTGY.GRUIP tkt"
strSQL = strSQL & " Where tky.year_month_nbr between " & strStDt & " and " & strEnDt
可以重写为:
strSQL = "SELECT tkt.cntry_istto,tkt.pod FROM INTGY.GRUIP tkt Where tky.year_month_nbr between " & strStDt & " and " & strEnDt
使用检索记录集,然后使用复制到工作表范围(仅指定左上角单元格)
另外,我不知道该数据库,但请注意您的日期,这些日期必须用单引号括起来(对于大多数数据库),或者如果使用MS Access,则用#
而不是引号括起来
Dim conn As Object
Dim rst As Object
Dim strSQL As String, strStDt As String, strEnDt As String
Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
strStDt = ThisWorkbook.Worksheets("lookup").Range("B6")
strEnDt = ThisWorkbook.Worksheets("lookup").Range("B5")
strSQL = "SELECT tkt.cntry_istto, tkt.pod"
strSQL = strSQL & " FROM INTGY.GRUIP tkt"
strSQL = strSQL & " WHERE tkt.year_month_nbr"
strSQL = strSQL & " BETWEEN '" & strStDt & "' and '" & strEnDt & "'
conn.Open "DSN=#EDXX"
rst.Open strSQL, conn
ThisWorkbook.Sheets(1).Range("A1").CopyFromRecordest rst
rst.Close
Set rst = Nothing
Set conn = Nothing
一个excel框弹出了我的SQL。这是否意味着它正在工作?如果是,我如何将结果放在表1中。感谢您的帮助,这给了您一个检查SQL的机会,并确保它输入正确-没有错误。我不知道如何将SQL结果粘贴到Excel,您必须自己研究,抱歉!