2017-09-19 1 views
0

정보를 검색하기 위해 다음을 시도했습니다. 엑셀 파일에 액세스 데이터베이스에서 :엑셀에서 열을 확인하여 vba를 사용하여 엑셀에서 데이터를 가져 오는 방법

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 

나는 엑셀 WB에서 열을 기준으로 결과를 반환하는 내 SQL 쿼리에 WHERE 조건을 업데이트 할. 하지만 올바른 구문을 얻지 못하고 있습니다.

도와주세요.

+0

감사를 할 수있는 올바른 구문 나를 도울 수 이것은 잘 작동 상태가 엑셀 –

답변

1
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 & & ")" 
+0

에서 열을 확인하는 SQL에 관하여 약 5k 행 범위. 하지만 70-80k 행의 목록에서 확인하고 싶다면 더 빠른 방법이 있습니까? –

+1

Access에서 실행하십시오. Access의 외부 데이터를 사용하여 Excel 시트의 열을 표로 연결합니다 (행 제목이 필요함). 그런 다음 Excel1을 쿼리의 sheet1.Material에 조인하십시오. –

+0

당신의 도움은 지금까지 매우 도움이되었습니다. 위 구문에 대한 도움을받을 수 있습니까? 나는 현재 일하고있다 col1 = Range (범위 ("A1 : Z1")) Find ("Material") 오프셋 (1, 0), 범위 ("A1 : Z1") Find ("Material" xlDown)) 내 테이블의 범위를 Excel에서 얻을 수 있습니다. 내 쿼리에서 어떻게 사용합니까? 나는 여기서 시작하여 구문에 문제가있다. 엄청 고마워!! –

관련 문제