2010-02-24 9 views
0

J'ai le code suivant:erreur VBA dans Excel

Sub Stats1() 
Workbooks("2006_2007_2008.xls").Sheets("Sheet1").Select 
Worksheets("Sheet1").Activate 

    Dim my_cell As String 
    my_cell = InputBox("Which cell?") 

    Dim objConn As ADODB.Connection 

    Dim rsData As ADODB.Recordset 

    Dim strSQL As String 
     Dim mycell As String 

    szconnect = "Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=*****;Data Source=*****" 

     'Create the Connection and Recordset objects. 
    Set objConn = New ADODB.Connection 
     Set rsData = New ADODB.Recordset 

    On Error GoTo errHandler 

    'Open the Connection and execute the stored procedure 

    objConn.Open szconnect 

    strSQL = "SELECT *fom mytable" 
    objConn.CommandTimeout = 0 

    Set rsData = objConn.Execute(strSQL) 

    For iCols = 0 To rsData.Fields.Count - 1 

    ActiveSheet.Range(my_cell).Select 
    ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column + iCols).Value = rsData.Fields (iCols).Name 
    ActiveSheet.Cells.Font.Name = "Arial" 
    ActiveSheet.Cells.Font.Size = 8 

    Next 

    ActiveSheet.Range(ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column),  ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column + rsData.Fields.Count)).Font.Bold = True 

    If Not rsData.EOF Then 

'Dump the contents of the recordset onto the worksheet 

On Error GoTo errHandler 

ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column).CopyFromRecordset rsData 


    If Not rsData.EOF Then 

    MsgBox "Data set too large for a worksheet!" 

    End If 

    rsData.Close 



    End If 

    Unload frmSQLQueryADO 

    Exit Sub 

    errHandler: 

    MsgBox Err.Description, vbCritical, "Error No: " & Err.Number 

'Unload frmSQLQueryADO 

    End Sub 

je reçois le « 424 objet erreur nécessaire » ... ne sais pas ce le problème est ...! je pense avoir ajouté toutes les références correctes

+1

__VAB__ erreur dans Excel. Est-ce une faute de frappe? –

+0

Quelle ligne renvoie l'erreur? –

+0

je ne suis pas sûr..since le programme exécute bien,.,. Je reçois les résultats de la requête ,, et à la fin..je reçois l'erreur..si je débogue..je n'obtiens rien .... – andreas

Répondre

1

Un problème évident:

strSQL = "SELECT *fom mytable" 

devrait être

strSQL = "SELECT * from mytable" 

EDIT: Je l'ai testé le code ci-dessus dans une maquette, et alors qu'il devrait être considérablement rangé, cela fonctionne. Par conséquent, je suggère que l'erreur est dans cette ligne:

Unload frmSQLQueryADO 

Essayez de commenter la ligne et voir si cela fonctionne.

+0

non ... pas le ... le SQL s'exécute bien..le SQL ci-dessus est juste un exemple ... – andreas

+0

J'ai ajouté une autre note. – Fionnuala

0

rsData est l'ensemble d'enregistrements renvoyé par la requête, pas la connexion.

Essayez objConn.Close à la place