Excel и SQL - VB
Формулировка задачи:
Вопро в cледующем... каким образом можно использовать язык SQL в VBA макросах... то есть.. как подсоедениться к книге... листу.. и диапазону и можно ли делать вставку, выборку, удаление.. где это можно почитать и желательно с примерами, может кто свои приведет.
Решение задачи: «Excel и SQL»
textual
Листинг программы
<font color="blue">Dim</font> cnn <font color="blue">As</font> ADODB.Connection <font color="blue">Dim</font> rst <font color="blue">As</font> ADODB.Recordset <font color="blue">Dim</font> strCnnString <font color="blue">As</font> <font color="blue">String</font> <font color="blue">Dim</font> strSource <font color="blue">As</font> <font color="blue">String</font> strSource = <font color="teal">"C:\MyBook.xls"</font> <font color="00AA00">' Строка подключения ODBC.</font> <font color="00AA00">'strCnnString = <font color="teal">"DRIVER={Microsoft Excel Driver (*.xls)};"</font> _</font> <font color="00AA00">' & <font color="teal">"ReadOnly=1;DBQ="</font> & strSource</font> <font color="00AA00">' Строка подключение OLE DB.</font> strCnnString = <font color="teal">"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="</font> _ & strSource & <font color="teal">";Extended Properties=Excel 8.0"</font> <font color="blue">Set</font> cnn = <font color="blue">New</font> ADODB.Connection cnn.<font color="blue">Open</font> strCnnString <font color="00AA00">' Используем метод Execute для создания набора записей.</font> <font color="00AA00">'Set rst = cnn.Execute(<font color="teal">"SELECT * FROM [Лист1$]"</font>)</font> <font color="00AA00">' Или для определенного диапазона.</font> <font color="00AA00">'Set rst = cnn.Execute(<font color="teal">"SELECT * FROM [Лист1$]A1:B10"</font>)</font> <font color="00AA00">'Do Until rst.EOF</font> <font color="00AA00">' Debug.Print rst.Fields(<font color="teal">"Поле1"</font>) & <font color="teal">" "</font> & rst.Fields(<font color="teal">"Поле2"</font>)</font> <font color="00AA00">' rst.MoveNext</font> <font color="00AA00">'Loop</font> <font color="00AA00">' Добавляем записи.</font> <font color="blue">Set</font> rst = <font color="blue">New</font> ADODB.Recordset <font color="blue">With</font> rst .CursorLocation = adUseClient .<font color="blue">Open</font> <font color="teal">"SELECT * FROM [Лист1$]"</font>, cnn, adOpenStatic, _ adLockOptimistic .AddNew .Fields(<font color="teal">"Поле1"</font>) = <font color="darkblue"><b>123</b></font> .Fields(<font color="teal">"Поле2"</font>) = <font color="teal">"Test"</font> .Update <font color="blue">End</font> <font color="blue">With</font> <font color="00AA00">' Обновляем записи.</font> <font color="00AA00">'With rst</font> <font color="00AA00">' .CursorLocation = adUseClient</font> <font color="00AA00">' .Open <font color="teal">"SELECT * FROM [Лист1$] WHERE Поле2='Test'"</font>, cnn, _</font> <font color="00AA00">' adOpenStatic, adLockOptimistic</font> <font color="00AA00">' .Fields(<font color="teal">"Поле1"</font>) = 1234</font> <font color="00AA00">' .Update</font> <font color="00AA00">'End With</font> <font color="00AA00">' По поводу удаления. Из справки MSDN.</font> <font color="00AA00">' You cannot:</font> <font color="00AA00">' 1. Delete an entire record at once or you receive the following error message:</font> <font color="00AA00">' Deleting data in a linked table is not supported by this ISAM.</font> <font color="00AA00">' You can only delete a record by blanking out the contents of each</font> <font color="00AA00">' individual field.</font> <font color="00AA00">' 2. Delete the value in a cell containing an Excel formula or you</font> <font color="00AA00">' receive the following error message:</font> <font color="00AA00">' Operation is not allowed in this context.</font> <font color="00AA00">' 3. You cannot delete the empty spreadsheet row(s) in which the deleted data</font> <font color="00AA00">' was located, and your recordset will continue to display empty</font> <font color="00AA00">' records corresponding to these empty rows.</font> rst.<font color="blue">Close</font> cnn.<font color="blue">Close</font> <font color="blue">Set</font> rst = <font color="blue">Nothing</font> <font color="blue">Set</font> cnn = <font color="blue">Nothing</font>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д