Microsoft Excel

Herbers Excel/VBA-Archiv

import von access

    Betrifft: import von access von: jhaustein
    Geschrieben am: 29.09.2003 15:06:36

    hallo gemeinschaft

    habe ein script gefunden, welches angeblich das importieren kann - weiss nur nicht wie es funzt - wenn ich es in ein modul kopiere und mit F8 den schrittweisen test machen will passiert garnichts

    Sub ADOImportFromAccessTable(DBFullName As String, _
        TableName As String, TargetRange As Range)
    ADOImportFromAccessTable "C:\FolderName\DataBaseName.mdb", _
        "TableName", Range("C1")
    Dim cn As ADODB.Connection, rs As ADODB.Recordset, intColIndex As Integer
        Set TargetRange = TargetRange.Cells(1, 1)
        ' open the database
        Set cn = New ADODB.Connection
        cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
            DBFullName & ";"
        Set rs = New ADODB.Recordset
        With rs
            ' open the recordset
            .Open TableName, cn, adOpenStatic, adLockOptimistic, adCmdTable
            ' all records
            '.Open "SELECT * FROM " & TableName & _
                " WHERE [FieldName] = 'MyCriteria'", cn, , , adCmdText
            ' filter records
            
            RS2WS rs, TargetRange ' write data from the recordset to the worksheet
            
    '        ' optional approach for Excel 2000 or later (RS2WS is not necessary)
    '        For intColIndex = 0 To rs.Fields.Count - 1 ' the field names
    '            TargetRange.Offset(0, intColIndex).Value = rs.Fields(intColIndex).Name
    '        Next
    '        TargetRange.Offset(1, 0).CopyFromRecordset rs ' the recordset data
    
        End With
        rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing
    End Sub
    

      


    Betrifft: AW: import von access von: Nike
    Geschrieben am: 29.09.2003 15:24:50

    Hi,
    du wirst noch eine Verknüpfung zum Objektmodell im VBA Editor aktivieren müssen...
    Also, Alt F11 und dann über Exrtas/Verweise einen Verweis auf
    das Objektmodell von Access setzen...

    Bye

    Nike


      


    Betrifft: AW: import von access von: jhaustein
    Geschrieben am: 29.09.2003 15:32:14

    oh gott - da sind ja tausende drinn- weisst du welches ich da aktivieren muss


      


    Betrifft: AW: import von access von: jhaustein
    Geschrieben am: 29.09.2003 15:39:23

    hab ein paar dinger dazu geschaltet - leider passiert da trotzdem nichts


      


    Betrifft: AW: import von access von: Nike
    Geschrieben am: 29.09.2003 16:10:54

    Hi,
    das von Microsoft Access?
    Also was mit MS ADO oder MS DAO ;-)

    Bye

    Nike


      


    Betrifft: AW: import von access von: jhaustein
    Geschrieben am: 29.09.2003 16:12:51

    hab ich gemacht leider das gleiche ergebnis - passiert nichts - kannst du mir vielleichgt schreiben, wie die obere sub zeile aussehen muss


    so bestimmt nicht oder?
    Sub ADOImportFromAccessTable "C:\FolderName\DataBaseName.mdb", "TableName", Range("C1")


      


    Betrifft: AW: doch doch... (Prozeduraufruf mit Variablen) von: Nike
    Geschrieben am: 29.09.2003 16:33:07

    Hi,
    so bestimmt doch:
    Sub ADOImportFromAccessTable(DBFullName As String, _
        TableName As String, TargetRange As Range)
    
    wenn ich diese Prozedur aufrufen möchte 
    und ihr beim Aufruf auch gleich die Variablen übergeben möchte...
    Das ist der Anzatz, um globale Variablen zu vermeiden.
    
    z.B.
    
    
    Sub test()
    call 
    Sub ADOImportFromAccessTable("C:\testverzeichnis\test.mdb", _
        "TestTabelle_In_DB", Range("A1:Z1000"))
    
    End Sub
    


    Sub ADOImportFromAccessTable(DBFullName As String, _
        TableName As String, TargetRange As Range)
    ...
    End Sub
    


    Es könnte sein, das du den Target Range erst noch
    rausfummeln mußt, weil der (glaub ich) nicht vom Ergebnisrange
    abweichen darf, aber einfach mal austesten...

    Bye

    Nike


      


    Betrifft: AW: doch doch... (Prozeduraufruf mit Variablen) von: jhaustein
    Geschrieben am: 29.09.2003 16:48:35

    wenn ich das schreibe, dann wird das schon rot dargestellt

    Sub test()
    call 
    Sub ADOImportFromAccessTable("C:\testverzeichnis\test.mdb", _
        "TestTabelle_In_DB", Range("A1:Z1000"))
    
    End Sub
    



      


    Betrifft: AW: doch doch... (Prozeduraufruf mit Variablen) von: jhaustein
    Geschrieben am: 29.09.2003 16:54:02

    okay das geht jetzt

    leider kommt jetzt folgende fehlermeldung bei
    Dim cn As ADODB.Connection, rs As ADODB.Recordset, intColIndex As Integer

    fehler beim kompilieren


      


    Betrifft: AW: doch doch... (Prozeduraufruf mit Variablen) von: jhaustein
    Geschrieben am: 30.09.2003 10:31:58

    moin gemeinschaft
    mit hilfe von nike und stundenlanger bastelstunde geht jetzt da was - vielleicht interessant auch für euch

    ich poste mal nen bsp
    Sub ADOImportFromAccessTable(DBFullName As String, _
        TableName As String, TargetRange As Range)
    Tabelle3.Select
    
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim intColIndex As Integer
        Set TargetRange = TargetRange.Cells(1, 1)
        ' open the database
        Set cn = New ADODB.Connection
        cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
            DBFullName & ";"
        Set rs = New ADODB.Recordset
        With rs
            ' open the recordset
            .Open TableName, cn, adOpenStatic, adLockOptimistic, adCmdTable
            ' all records
            '.Open "SELECT * FROM " & TableName & _
                " WHERE [FieldName] = 'MyCriteria'", cn, , , adCmdText
            ' filter records
            
          '  RS2WS rs, TargetRange ' write data from the recordset to the worksheet
    wenn ihr hier das simikolon weg nehmt, dann funzt es bei mir nicht - vielleicht bei euch 
            
    '        ' optional approach for Excel 2000 or later (RS2WS is not necessary)
           For intColIndex = 0 To rs.Fields.Count - 1 ' the field names
                TargetRange.Offset(0, intColIndex).Value = rs.Fields(intColIndex).Name
            Next
            TargetRange.Offset(1, 0).CopyFromRecordset rs ' the recordset data
    
        End With
        rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing
    End Sub
    


    Sub aufruf()
    Call ADOImportFromAccessTable("D:\Programme\Microsoft Office\Office\Beispiel\nordwind.mdb", _
        "Kunden", Range("A1:Z1"))
    
    
    End Sub
    


    es muss jetzt noch unter extras/verweise die verknüpfung microsoft ado ... aktiviert werden

    das wars


     

    Beiträge aus den Excel-Beispielen zum Thema " import von access"