powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel->ADO->SQL
10 сообщений из 10, страница 1 из 1
Excel->ADO->SQL
    #33714886
SaVaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем привет!! подскажите мона ли брать таблиццы из EXcel и экспортировать их в sql при этом делать выборку по столбцам =)) спасибо
...
Рейтинг: 0 / 0
Excel->ADO->SQL
    #33715058
timur999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как хотите из XL читать через ADO или XL?
...
Рейтинг: 0 / 0
Excel->ADO->SQL
    #33715105
Ламер Ламерович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно прчитать данные так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub getXLData(ByVal vstrWorkbookFullName As String, _
              ByVal vstrWorksheetName As String, _
              Optional ByVal vstrColumns As String = "*", _
              Optional ByVal vstrRange As String = "")
    Dim conn As Object
    Dim rs As Object
    Dim strConnString As String
    Dim strSQL As String

    Set conn = CreateObject("ADODB.Connection")
    strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";" _
                    & "Data Source=" & vstrWorkbookFullName
    conn.Open strConnString
    
    Set rs = CreateObject("ADODB.Recordset")

    strSQL = "SELECT " & vstrColumns & " FROM [" & vstrWorksheetName & "$" & vstrRange & "]"
    rs.Open strSQL, conn, adOpenStatic, adLockReadOnly

    rs.Close
    Set rs = Nothing
    conn.Close
    Set conn = Nothing
End Sub
Примеры вызова:
Взять данные первого столбца:
getXLData "c:\book1.xls", "Sheet1" , "F1"
для всех
getXLData "c:\book1.xls", "Sheet1"

Можно и адрес Range указать
...
Рейтинг: 0 / 0
Excel->ADO->SQL
    #33715590
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Условие WHERE тоже не мешало бы добавить :)
_____________________________________
А я хочу Брежнева, чтобы все было по прежнему... "Стволы"
...
Рейтинг: 0 / 0
Excel->ADO->SQL
    #33719191
А если надо данные в запрос из определенных столбцов отобрать, в соответствии с заголовками в первой строке? Можно без кода, подкиньте просто идею, если можно.
...
Рейтинг: 0 / 0
Excel->ADO->SQL
    #33719674
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так и составляй запрос и какой нужно
тут тонкость есть одна
HDR=No - заголовки не читаюся, т.е
имякол-во летИван 15Петр20
если не указан vstrRange, что нужно брать записи со второй строки например = "А2:В10" то "имя" и "коли-во лет" тоже попадут в таблицу причем второй столбец станет текстовым, т.к. берется тип данных первой строки, для того чтобыэтого избежать нужно или указывать рэндж или HDR=YES, но во втором случае поля в рекордсете будут иметь имена из первой строки, а в первом F1,F2 и тд
С этим разобрался?
теперь просто пиши нужную тебе strSQL = "SELECT ..."
...
Рейтинг: 0 / 0
Excel->ADO->SQL
    #33719693
Ламер Ламерович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИгорьЧерниенкоА если надо данные в запрос из определенных столбцов отобрать, в соответствии с заголовками в первой строке? Можно без кода, подкиньте просто идею, если можно.
должно быть HDR=Yes:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Sub getXLData(ByVal vstrWorkbookFullName As String, _
              ByVal vstrWorksheetName As String, _
              Optional ByVal vstrColumns As String = "*", _
              Optional ByVal vstrRange As String = "", _
              Optional ByVal vfUseHeader As Boolean)
    
    Const adOpenStatic =  3 
    Const adLockReadOnly =  1 
    
    Dim conn As Object
    Dim rs As Object
    Dim strConnString As String
    Dim strSQL As String
    On Error GoTo HandleError
    Set conn = CreateObject("ADODB.Connection")
    strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=""Excel 8.0;HDR=" & IIf(vfUseHeader, "Yes", "No") & ";IMEX=1"";" _
                    & "Data Source=" & vstrWorkbookFullName
    conn.Open strConnString
    
    Set rs = CreateObject("ADODB.Recordset")

    strSQL = "SELECT " & vstrColumns & " FROM [" & vstrWorksheetName & "$" & vstrRange & "]"
    rs.Open strSQL, conn, adOpenStatic, adLockReadOnly
    'что-то читаем, передаем данные
    rs.Close
    Set rs = Nothing
    conn.Close
    Set conn = Nothing
HandleExit:
    Exit Sub
HandleError:
    MsgBox "Error# " & Err.Number & vbCrLf & Err.Description
    Resume HandleExit
End Sub
...
Рейтинг: 0 / 0
Excel->ADO->SQL
    #33719915
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
условие добавить опять забыл
мне кажетсяч лучше сделать это функцией а возвращать она будет рекордсет
_____________________________________
А я хочу Брежнева, чтобы все было по прежнему... "Стволы"
...
Рейтинг: 0 / 0
Excel->ADO->SQL
    #33720102
Ламер Ламерович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barrabas
мне кажетсяч лучше сделать это функцией а возвращать она будет рекордсет

Тогда нельзя закрывать Connection.
...
Рейтинг: 0 / 0
Excel->ADO->SQL
    #33720158
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ламер Ламерович barrabas
мне кажетсяч лучше сделать это функцией а возвращать она будет рекордсет

Тогда нельзя закрывать Connection.
а ну да
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel->ADO->SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]