2016-05-09 3 views
0
Sub INTL() 
    Dim conn As ADODB.Connection 
    Dim rec1 As ADODB.Recordset 
    Dim thisSql As String 
    Set conn = New ADODB.Connection 
    Dim sConn As String sConn = "Provider=SQLOLEDB;Trusted_Connection=Yes;Server=mydb;trusted_connection=yes" conn.Open sConn  
    'Set and Excecute SQL Command'  
    thisSql = "select top 5 * from useraccount"      
    'Open Rcordset'  
    Set rec1 = New ADODB.Recordset   
    rec1.Open thisSql, conn    
    'Copy Data to Excel'   
    ActiveSheet.Range("A1").CopyFromRecordset (objMyRecordset) 
End Sub 

Der Code funktioniert Kompilieren nicht in Excel, Fehler: Sub oder Funktion nicht definiertDB Trusted_Connection nicht

+0

In welcher Zeile ist der Übersetzungsfehler aktiviert? Übrigens hat dein Fragetitel nichts mit deiner Frage zu tun. –

Antwort

1

Wenn dies in Ihrem IDE ist genau so:

Dim sConn As String sConn = "Provider=SQLOLEDB;Trusted_Connection=Yes;Server=mydb;trusted_connection=yes" conn.Open sConn  

Dann bist du fehlende Anweisungen Separatoren, oder besser, getrennte Leitungen:

Dim sConn As String 
sConn = "Provider=SQLOLEDB;Trusted_Connection=Yes;Server=mydb;trusted_connection=yes" 
conn.Open sConn  

Auch auf dieser Linie:

ActiveSheet.Range("A1").CopyFromRecordset (objMyRecordset) 

Diese Klammern sind Kraft-Passing objMyRecordset nach Wert (d.h. eine Kopie des Objektzeigers) an die Methode CopyFromRecordset. Dies wäre ein typischer Anruf sein:

ActiveSheet.Range("A1").CopyFromRecordset objMyRecordset 

Wenn CopyFromRecordset nimmt den Re-Cord ByVal, dann ist es von Wert übergeben. Wenn es nimmt, dann wird es durch Referenz weitergegeben. Forcieren ByVal ist normalerweise nicht erforderlich.

+1

Außerdem sollte 'objMyRecordset'' rec1' sein;) – Rory

Verwandte Themen