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

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

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

как ?

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

textual
Листинг программы
  1. Public Function ADO_R_Dmitry(ByVal StrSql$, ByVal FilePath$, ByVal OutputRange As Range, _
  2. ByVal FieldsName As Boolean, ByVal OutputFieldsName As Boolean, Optional TypeBase As Long = 0, Optional ColumnDelimeter As String = ",")
  3.  
  4. '==============================================================================
  5. '* Автор R Dmitry
  6. '==============================================================================
  7. Dim sCon As String, FieldName As String
  8. Dim rs As Object, cn  As Object
  9. Set rs = CreateObject("ADODB.Recordset")
  10. Set cn = CreateObject("ADODB.Connection")
  11. If FieldsName Then FieldName = "Yes" Else FieldName = "No"
  12.  
  13. If TypeBase > 0 Then
  14.     sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
  15.     If TypeBase = 1 Then sCon = sCon & FilePath & ";User Id=admin;Password=;" 'Access
  16.   'If TypeBase = 2 Then sCon = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & FilePath
  17.    If TypeBase = 2 Then sCon = sCon & FilePath & ";Extended Properties=dBASE IV;User ID=Admin;Password=;" 'DBF
  18.    'If TypeBase = 3 Then sCon = sCon & FilePath & ";Extended Properties=text;HDR=" & FieldName & ";FMT=Delimited " & ColumnDelimeter 'TXT
  19.    If TypeBase = 3 Then sCon = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" & FilePath & ";Extensions=asc,csv,tab,txt;"
  20. Else
  21.     Select Case Val(Application.Version)
  22.         Case Is < 12
  23.             sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _
  24.               & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";"
  25.         Case 12, 14
  26.             sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _
  27.             & ";Extended Properties=""Excel 12.0;HDR=" & FieldName & ";IMEX=1"";"
  28.     End Select
  29. End If
  30. cn.Open sCon
  31. If Not cn.State = 1 Then Exit Function
  32. Set rs = cn.Execute(StrSql)
  33. If Not FieldsName Then OutputFieldsName = False
  34.  If OutputFieldsName Then
  35.     For i = 0 To rs.Fields.Count - 1
  36.     OutputRange.Offset(0, i) = rs.Fields(i).Name
  37.     Next
  38.     Set OutputRange = OutputRange.Offset(1, 0)
  39.  End If
  40.  DoEvents
  41. OutputRange.CopyFromRecordset rs
  42. rs.Close:  cn.Close
  43. Set cn = Nothing: Set rs = Nothing
  44. End Function
  45. Sub test()
  46. Dim strSql2$
  47. Dim Lr&
  48. Lr = Cells(Rows.Count, 1).End(xlUp).Row
  49. If Lr < 3 Then Lr = 3
  50. Range("a3:q" & Lr).ClearContents
  51. strSql2 = "select * from [Янв_Февр$] where [Код товара]like '%" & [a2].Value & "%'"
  52. Call ADO_R_Dmitry(strSql2, ThisWorkbook.FullName, Sheets("Поиск").[a3], True, False)
  53. End Sub
  54. Sub test2()
  55. Dim strSql2$
  56. Dim Lr&
  57. Lr = Cells(Rows.Count, 1).End(xlUp).Row
  58. If Lr < 3 Then Lr = 3
  59. Range("a3:q" & Lr).ClearContents
  60. strSql2 = "select * from [Мар_Апр$] where [Код товара]like '%" & [a2].Value & "%'"
  61. Call ADO_R_Dmitry(strSql2, ThisWorkbook.FullName, Sheets("Поиск").[a3], True, False)
  62. End Sub

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут