Новости:

Название темы должно отражать суть задачи.
Темы типа "ПОМОГИТЕ!!!", "Срочно!" и т.п. будут удаляться без объяснения причин

Главное меню

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.

Просмотр сообщений

Темы - R Dmitry

#1
В общем надоело мне клепать Строки подключения и т.д   :) наваял функцию
Вот хочу совета услышать, может чего добавить? Что посоветуете?

Public Function ADO_R_Dmitry(ByVal strSql$, ByVal FilePath$, ByVal OutputRange As Range, ByVal OfisVersion As Long, _
ByVal FieldsName As Boolean, ByVal OutputFieldsName As Boolean)

Dim sCon As String, FieldName As String
'Dim cn As ADODB.Connection, rs As ADODB.Recordset  'Для раннего связывания
Dim rs As Object, cn  As Object
Set rs = CreateObject("ADODB.Recordset") 'Для позднего связывания
Set cn = CreateObject("ADODB.Connection") 'Для позднего связывания
'Set cn = New ADODB.Connection  'Для раннего связывания
'Set rs = New ADODB.Recordset   'Для раннего связывания
If FieldsName Then FieldName = "Yes" Else FieldName = "No"
Select Case OfisVersion
    Case 2003
        sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _
          & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";"
    Case 2007
        sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _
        & ";Extended Properties=""Excel 12.0;HDR=" & FieldName & ";IMEX=1"";"
End Select

cn.Open sCon
If Not cn.State = 1 Then Exit Function
Set rs = cn.Execute(strSql)
'rs.Open strSql, cn, adOpenKeyset, adLockPessimistic   'Для раннего связывания
If Not OutputFieldsName Then FieldsName = 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
OutputRange.CopyFromRecordset rs
rs.Close:  cn.Close
Set cn = Nothing: Set rs = Nothing
End Function

ну и проверка
Sub Test()
'пример использования
strSql2 = "SELECT * FROM [Лист1$]"
Call ADO_R_Dmitry(strSql2, ThisWorkbook.FullName, Sheets(2).[a1], 2003, False, True)
End Sub

#2
Бродя по этому сайту набрел на календарь. Решил полистать, вроде все нормально местами встречаются дни рождения , знакомые ники...........
Добрел до сентября и ....... 11 сентября - 11 дней рождения.
Я понимаю что это возможно один человек (хотя мне было бы лень 11 раз регистрироваться), но все равно забавно.
Яндекс.Метрика Рейтинг@Mail.ru