Sql запрос к файлу excel - VB

Узнай цену своей работы

Формулировка задачи:

как ?

Решение задачи: «Sql запрос к файлу excel»

textual
Листинг программы
Public Function ADO_R_Dmitry(ByVal StrSql$, ByVal FilePath$, ByVal OutputRange As Range, _
ByVal FieldsName As Boolean, ByVal OutputFieldsName As Boolean, Optional TypeBase As Long = 0, Optional ColumnDelimeter As String = ",")
 
'==============================================================================
'* Автор R Dmitry
'==============================================================================
Dim sCon As String, FieldName As String
Dim rs As Object, cn  As Object
Set rs = CreateObject("ADODB.Recordset")
Set cn = CreateObject("ADODB.Connection")
If FieldsName Then FieldName = "Yes" Else FieldName = "No"
 
If TypeBase > 0 Then
    sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    If TypeBase = 1 Then sCon = sCon & FilePath & ";User Id=admin;Password=;" 'Access
   'If TypeBase = 2 Then sCon = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & FilePath
    If TypeBase = 2 Then sCon = sCon & FilePath & ";Extended Properties=dBASE IV;User ID=Admin;Password=;" 'DBF
    'If TypeBase = 3 Then sCon = sCon & FilePath & ";Extended Properties=text;HDR=" & FieldName & ";FMT=Delimited " & ColumnDelimeter 'TXT
    If TypeBase = 3 Then sCon = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" & FilePath & ";Extensions=asc,csv,tab,txt;"
Else
    Select Case Val(Application.Version)
        Case Is < 12
            sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _
              & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";"
        Case 12, 14
            sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _
            & ";Extended Properties=""Excel 12.0;HDR=" & FieldName & ";IMEX=1"";"
    End Select
End If
cn.Open sCon
If Not cn.State = 1 Then Exit Function
Set rs = cn.Execute(StrSql)
If Not FieldsName Then OutputFieldsName = False
 If OutputFieldsName Then
    For i = 0 To rs.Fields.Count - 1
    OutputRange.Offset(0, i) = rs.Fields(i).Name
    Next
    Set OutputRange = OutputRange.Offset(1, 0)
 End If
 DoEvents
OutputRange.CopyFromRecordset rs
rs.Close:  cn.Close
Set cn = Nothing: Set rs = Nothing
End Function
Sub test()
Dim strSql2$
Dim Lr&
Lr = Cells(Rows.Count, 1).End(xlUp).Row
If Lr < 3 Then Lr = 3
Range("a3:q" & Lr).ClearContents
strSql2 = "select * from [Янв_Февр$] where [Код товара]like '%" & [a2].Value & "%'"
Call ADO_R_Dmitry(strSql2, ThisWorkbook.FullName, Sheets("Поиск").[a3], True, False)
End Sub
Sub test2()
Dim strSql2$
Dim Lr&
Lr = Cells(Rows.Count, 1).End(xlUp).Row
If Lr < 3 Then Lr = 3
Range("a3:q" & Lr).ClearContents
strSql2 = "select * from [Мар_Апр$] where [Код товара]like '%" & [a2].Value & "%'"
Call ADO_R_Dmitry(strSql2, ThisWorkbook.FullName, Sheets("Поиск").[a3], True, False)
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5