0
我想用VBA连接到我的Access表。我希望能够输入采购订单号,并将查询中的值引用到Access表中。我想将该查询的结果打印到我的Excel工作表中。这是我到目前为止..任何想法?使用VBA连接Access到Excel,不会输出Access的任何记录
Sub CommandButton1_Click()
Dim myValue As Variant
myValue = InputBox("Enter Purchase Order Number:")
Range("A1").Value = myValue
Call ADO_Conn(myValue)
End Sub
Sub ADO_Conn(myValue)
Dim conn As New Connection
Dim rstAnswer As New ADODB.Recordset
Dim connected As Boolean
Dim RootPath, DBPath As String
Dim tempString As String
connected = False
RootPath = "Z:\BSD Internship Program\FY14 Intern Files\John Jameson\Vouchers"
DBPath = RootPath & "Acquisition Support Datamart Build 9.11-03.accdb"
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source= Z:\BSD Internship Program\FY14 Intern Files\John Jameson\Vouchers\Acquisition Support Datamart 9.1103.accdb;"
connected = True
rstAnswer.Open "SELECT VW_PUB_PURCHASE_ORDER.PO_NO FROM VW_PUB_PURCHASE_ORDER " & _
"WHERE VW_PUB_PURCHASE_ORDER.PO_NO = ' " & myValue & " ';", conn, adOpenKeyset, adLockOptimistic
Do Until rstAnswer.EOF
tempString = CStr(rstAnswer!VW_PUB_PURCHASE_ORDER)
Application.ActiveWorkbook.Worksheets("Sheet1").Range("A5").Value = tempString
rstAnswer.MoveNext
Loop
rstAnswer.Close
conn.Close
connected = False
End Sub
非常感谢您的回复!摆脱循环是一个好主意。你知道一种方法来引用单元格A1,而不是使用myValue。我试过“WHERE PO_NO ='&Sheet1.Range(A1).Value';”但它似乎并不奏效。任何见解? – Savino 2014-09-02 23:45:06
表格(“Sheet1”)。范围(“A1”)应该有效。如果你没有用引号括起“A1”,Excel会将其视为一个变量。 – 2014-09-02 23:47:09
由于某些原因VBA不喜欢(“A1”)..我认为这是“”,这是造成问题!尽管我很接近! – Savino 2014-09-03 00:10:31