2013-08-02 2 views
0

Я хочу попробовать подключиться к excel с помощью ado-соединения и vba. но проблема в том, что это ошибка, которую не удалось найти в ISAM. я попытался посмотреть другое решение, но тот же вопрос вернется. Может быть, есть элемент управления activex, который отсутствует? вот мой кодНе удалось найти устанавливаемый ISAM в excel 2007 vba

Dim cN As ADODB.Connection '* Connection String 
Dim RS As ADODB.Recordset '* Record Set 
Dim sQuery As String '* Query String 
Dim i1 As Long 
Dim lMaxRow As Long '* Last Row in the Sheet 
Dim iRevCol As Integer '* 
Dim i3 As Integer 

Set cN = New ADODB.Connection 
cN.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\PC\Desktop\Excel Programming\PlayerDatabase.xlsm;Readonly=False;Extended Properties=Excel 12.0;;HDR=yes;Persist Security Info=False" 
cN.ConnectionTimeout = 40 
cN.Open 

Set RS = New ADODB.Recordset 

lMaxRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row 
sQuery = "Select * From [Player$]" 


RS.ActiveConnection = cN 
RS.Source = sQuery 
RS.Open 

If RS.EOF = True And RS.BOF = True Then 
    MsgBox ("End of File") 
End If 

If RS.State <> adStateClosed Then 
RS.Close 
End If 

If Not RS Is Nothing Then Set RS = Nothing 
If Not cN Is Nothing Then Set cN = Nothing 

UPDATE:

теперь я изменить ConnectionString к этому

cN.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\PC\Desktop\Excel Programming\PlayerDatabase.xlsm;Extended Properties='Excel 12.0 Macro;HDR=YES'" 

, но он дает мне ошибку не удается обновить. База данных или объект только для чтения.

, когда я поставил только для чтения = ложь

cN.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\PC\Desktop\Excel Programming\PlayerDatabase.xlsm;ReadOnly=false;Extended Properties='Excel 12.0 Macro;HDR=YES'" 

это даст ошибку не удался найти устанавливаемый ISAM :(

+0

Ваш «ConnectionString» кажется завышенным. Перейдите в [ConnectionStrings.Com] (http://www.connectionstrings.com) и проверьте правильность синтаксиса, подходящего для среды, с которой вы работаете, и файлов, из которых вы получаете данные. –

+0

в моей проблеме с обновлением, я взял эту строку подключения на сайт, который вы мне дали. – user2328935

ответ

0

Я не знаю, что находится внутри вашего XLSM файла, извлечение данных из но строка соединения должна быть как можно более простым Это работает для меня (но я не проверял, только для чтения параметра).

"Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
      "Data Source=C:\Users\Dane\BazaDanych.xlsm;" & _ 
      "Extended Properties=Excel 12.0 Macro" 
+0

на самом деле моя база данных xlsm по-прежнему пуста .. просто хочу проверить, не связано ли соединение с ado ... у вас есть представление, как я могу сделать datase.xlsm для записи/чтения? – user2328935

+0

есть ли у вас какой-либо пример или wokbook, который можно загрузить? – user2328935

+1

Я не уверен, что я получаю то, что вам действительно нужно ... чтобы проверить, работает ли ADO, вам нужно иметь некоторые данные в 'PlayerDatabase.xlsm' и установить все правильное, включая правильную инструкцию SQL. Чтобы вводить данные в любой файл, вам понадобятся разные настройки подключения и различные инструкции SQL. В вашем вопросе вы задаете проблему ISAM, поэтому я предоставил возможные решения и идеи. Для других, пожалуйста, как другой вопрос. –

0

так он был указан следующим образом:

string ConeectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + txtFlp.Text + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES\""); 
OleDbConnection oconn = new OleDbConnection(ConeectionString); 
Смежные вопросы