Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将结果从数据库拉入Excel_Vba_Excel - Fatal编程技术网

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,您必须自己研究,抱歉!