c использованием DataEnvironment
Dim cn As New ADODB.Connection, r As ADODB.Recordset
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties") = "Excel 8.0"
.CursorLocation = adUseClient
.Open "Data Source = C:\My.xls"
Set r = .OpenSchema(adSchemaTables)
Do Until r.EOF
Debug.Print r(2)
r.MoveNext
Loop
End With
Dim myConnection As ADODB.Connection
Dim myCommand As ADODB.Command
Dim myRS As ADODB.Recordset
Dim myList As ADODB.Recordset
Dim strCnn As String
Dim strSQL As String
Set myConnection = New ADODB.Connection
strCnn = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=Excel Files;Mode=ReadWrite;DSN=Excel Files;DBQ=z:\dll\book1.xls;DriverId=790;MaxBufferSize=2048;PageTimeout=5;"
myConnection.Open strCnn
Set myList = myConnection.OpenSchema(adSchemaTables)
Do Until myList.EOF
' собственно имена листов
Debug.Print myList(2)
myList.MoveNext
Loop
Set myCommand = New ADODB.Command
Set myCommand.ActiveConnection = myConnection
myCommand.CommandText = "SELECT `LIST3$`.* FROM `LIST3$`"
' собственно быполнение SQL-запроса
Set myRS = myCommand.Execute()
Do Until myRS.EOF
Debug.Print myRS.Fields(1).Value
myRS.MoveNext
Loop
myList.Close
myRS.Close
myConnection.Close
Set myList = myEnv.fileXLS.OpenSchema(adSchemaTables)
Do Until myList.EOF
Debug.Print myList(2)
myList.MoveNext
Loop
strCnn = "Provider=MSDASQL.1;Persist Security Info=False;Data Dource=Excel Files;Mode=ReadWrite;DSN=Excel Files;DBQ=z:\***.xls;DriverId=790;MaxBufferSize=2048;PageTimeout=5;"
myConnection.Open strCnn ' ЗДЕСЬ!
Sandr0 писал(а):посмотри как у тебя прописано в ODBC - Excel Files или Файл Excel
это всего лишь строка инициализации
найтить бы описание к этому...
хоть я и поменял DBQ=z:\***.xls на свое значение...
А код by Andrey Fedorov работает...
Sandr0 писал(а):Sandr0 писал(а):посмотри как у тебя прописано в ODBC - Excel Files или Файл Excel
это всего лишь строка инициализации
найтить бы описание к этому...
??Dimitr писал(а):2 Andrey Fedorov
А как бы ты использовал sql в екселе для отбора данных без ODBC?
Dimitr писал(а):так где должно быть прописано-то???
Dimitr писал(а): и что имеется ввиду под понятием "поля"? Это столбцы или строки из листа?
Leon_ писал(а):??Dimitr писал(а):2 Andrey Fedorov
А как бы ты использовал sql в екселе для отбора данных без ODBC?
Я, конечно, совсем не Andrey Fedorov, просто мимо спокойно пройти не могу..
Для "sql в екселе для отбора данных" достаточно просто подключить библиотеку ADO к проекту.
Set myCommand = New ADODB.Command
Set myCommand.ActiveConnection = myConnection
myCommand.CommandText = "SELECT [лист1$].* FROM [лист1$]"
Set myRS = myCommand.Execute()
myRS.MoveFirst
Do Until myRS.EOF
MsgBox myRS.Fields(2).Value
myRS.MoveNext
Loop
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1