簡體   English   中英

如何通過檢查Excel中的列來使用VBA將數據從對Excel的訪問中拉出

[英]How to pull data from access to excel using vba by by checking a column in excel

我已經嘗試了以下方法來檢索信息。 從訪問數據庫到Excel文件:

Sub ddd()

Const dbloc As String = "C:\Users\mysystem1\Downloads\Database11.accdb"
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim xlbook As Workbook
Dim xlsheet As Worksheet
Dim a As Long
Dim SQL As String

Set xlbook = ActiveWorkbook
Set xlsheet = xlbook.Worksheets(1)
xlsheet.Range("A5:Z100000").ClearContents
Application.StatusBar = "Connecting to external database..."

Set db = OpenDatabase(dbloc)

SQL = "SELECT  Material_ID "
SQL = SQL & "FROM Sheet1"    
'Sheet1 is the the access tablename
'SQL = SQL & "WHERE Material IN (500017,500024,500029)"  
' i want to update the where condition above to a column in the excel wb itself



Set rs = db.OpenRecordset(SQL, dbOpenSnapshot)

If rs.RecordCount = 0 Then

MsgBox "No data retrieved from database", vbInformation + vbOKOnly, "No Data"
    GoTo SubExit

Else

    rs.MoveLast

    recCount = rs.RecordCount

    rs.MoveFirst

End If

xlsheet.Range("C5").CopyFromRecordset rs

End Sub

我想更新我的sql查詢中的where條件,以基於來自Excel wb的列返回結果。 但是我沒有得到正確的語法。

請幫忙。

 SQL = SQL & "WHERE Material IN (" & range("a1") & "," & range("A2") & " ," & range("a3") & ")"  

您可以用單元格引用從字面上替換這些值,但要確保引用不在語音標記范圍內。

如果您想做更多的細胞,您可以做

  SQL = SQL & "WHERE Material IN ("
  Dim r as range
  For each r in range("a1:A20")
       SQL = SQL & r.text & ","
  Next r
  SQL = left(SQL,LEN(SQL)-1)  'Drop last comma
  Sql = SQL &  & ")"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM