2015-10-21 1 views
0

Я финализации макроса VBA, и интересно, если кто-то может помочь со следующим сообщением об ошибке:ADODB.Connection в VBA: операция не разрешена, если объект закрыт

run-time error '3704' 
operation is not allowed when the object is closed 

Код:

== ==============================

Sub upload() 
' 
' upload Macro 
' 
Dim adoCN As ADODB.Connection 
Dim sConnString As String 
Dim sSQL As String 
Dim lRow As Long 
Dim i As Integer 

sConnString = "Provider=sqloledb;Server=xxx;User Id=xxx;Password=xxx" 
Set adoCN = CreateObject("ADODB.Connection") 
Sheets("sql").Activate 
Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Select 
lRow = Selection.Rows.Count 
For i = 2 To lRow 
sSQL = "INSERT INTO tblData (ISN, Date, Px_last) " & _ 
     " VALUES (" & _ 
     "'" & Cells(i, 1) & "', " & _ 
     "'" & Cells(i, 2) & "', " & _ 
     "'" & Cells(i, 3) & "')" 
adoCN.Execute sSQL 
Next i 
adoCN.Close 
Set adoCN = Nothing 
End Sub 

Бест,

+0

В какой строке происходит ошибка? – MatthewD

+0

@MatthewD: at' adoCN.Execute sSQL'. Благодарю. – owner

ответ

3

Вам необходимо открыть соединение прежде чем вы сможете его использовать.

sConnString = "Provider=sqloledb;Server=xxx;User Id=xxx;Password=xxx" 
Set adoCN = CreateObject("ADODB.Connection") 
adoCN.Open 
+0

ура. теперь я получаю сообщение с именем '[Microsoft] [ODBC Driver Manager], которое не найдено, и не указан драйвер по умолчанию '. Нужно ли обновлять в 'sConnString' провайдера от' sqloledb' до 'odbc'? thx – owner

+0

Да, вам нужно правильно построить строку подключения. К чему вы подключаетесь? Access, Oracle и т. Д. – MatthewD

+0

на 'sql server'. – owner

 Смежные вопросы

  • Нет связанных вопросов^_^