Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
956to960
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
956to960
956to960
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Export nach Access

Export nach Access
04.03.2008 15:43:35
Hans
Hallo zusammen
Setze Excel schon sehr lange ein - aber mit vba habe ich praktisch null Erfahrung (ausser mit Makrorecorder.....)
Nun zu meiner Frage;
Ich habe in einer fiktiven Excel-Tabelle den Range A5:K7, wobei Zeile 5 die Ueberschriften darstellt.
Nun möchte ich diese Daten in die bereits bestehende und gleich aufgebaute Access-DB db1.mdb exportieren.
Den Code habe ich erstellt, er funktioniert aber nicht richtig. Und in Forum habe nichts konkretes für mein Problem gefunden. Das Problem ist, dass der Code Access öffnet, sauber durchläuft, die DB schliesst, aber keine Daten exportiert.......
Der Code sieht wie folgt aus:
Sub Excel_nach_Access()
Dim AccApplication As Access.Application 'Definiert Variable
On Error Resume Next
Set AccApplication = CreateObject("Access.Application")
AccApplication.OpenCurrentDatabase "I:\DB1.mdb"
AccApplication.UserControl = True
Dim adoConnection As ADODB.Connection
Dim adoRecordset As ADODB.Recordset
Dim lngRow As Long
Set adoRecordset = New ADODB.Recordset
adoRecordset.Open "Tabelle1", ado.Connection, _
adOpenKeyset, adLockOptimistic, adCmdTable
IntRow = 6
Do While RANGE("B" & IntRow) ""
With adoRecordset
.AddNew
.Fields("B").Value = RANGE("B" & IntRow).Value
.Fields("C").Value = RANGE("C" & IntRow).Value
.Update
End With
IntRow = IntRow + 1
Loop
adoRecordset.Close
adoConnetction.Close
AccApplication.CloseCurrentDatabase
Für Eure geschätzte Hilfe bin ich sehr dankbar.
Gruss und Dank
Hans Peter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Export nach Access
04.03.2008 21:21:20
bst
Abend Hans-Peter,
Du brauchst Access nicht zu öffnen, es reicht die adoConnection zu verbinden. Hier ist vermutlich auch Dein Problem, Du hast zwar ein new adoConnection gemacht, dieses aber nirgendwohin verbunden.
Der übliche Weg ist es hier wohl adoConnection.Open zu benutzen.
Siehe: http://www.activevb.de/tutorials/tut_adokurs/adokurs.html
HTH, Bernd

AW: Export nach Access
05.03.2008 10:15:00
Hans
Hallo Bernd
Besten Dank fuer Deine Antwort und Hilfe. Ich habe den Code, wie von Dir vorgeschlagen, angepasst, es hat aber nichts gebracht.
Ich werde mich nun mal auf der vorgeschlagenen HP umsehen. Evtl. finde ich etwas. Danke nochmals.
Vielleicht hat ja jemand schon mal so einen Datenexport ins Access programmiert und kann mir den Code zur Verfügung stellen?
Grüsse
Hans Peter

Anzeige
AW: Export nach Access
05.03.2008 10:55:06
bst
Morgen Hans-Peter,
mache das mal so ähnlich.
Sub x() benötigt einen Verweise auf ADO und benutzt einen RecordSet.
Sub y() benötigt keinen Verweis und benutzt einen SQL-Command.
In Spalte B stehen hier Zahlen, in Spalte C Texte. Falls das bei Dir anders sein sollte musst Du in y() den SQL-Befehl anpassen. Bei Texten müssen einzelne Hochkommas um die Werte, z.B.:
INSERT INTO Tabelle1 FIELDS (B,C) VALUES (1,'eins')
cu, Bernd
--
Option Explicit

Sub x()
    Dim adoConnection As ADODB.Connection
    Dim adoRecordset As ADODB.Recordset
    Dim strFileName As String
    Dim lngRow As Long
    
    strFileName = "e:\daten\excel\data\db1.mdb"
    
    Set adoConnection = New ADODB.Connection
    With adoConnection
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .Open strFileName
    End With
    
    Set adoRecordset = New ADODB.Recordset
    adoRecordset.Open "Tabelle1", adoConnection, adOpenKeyset, adLockOptimistic, adCmdTable
    
    lngRow = 6
    Do While Cells(lngRow, 2).Value <> ""
        With adoRecordset
            .AddNew
            .Fields("B").Value = Cells(lngRow, 2).Value
            .Fields("C").Value = Cells(lngRow, 3).Value
            .Update
        End With
        lngRow = lngRow + 1
    Loop
    adoRecordset.Close
    adoConnection.Close
    Set adoRecordset = Nothing
    Set adoConnection = Nothing
End Sub



Option Explicit

Const adCmdText = 1

Sub y()
    Dim adoConnection As Object
    Dim adoCmd As Object
    Dim strFileName As String
    Dim lngRow As Long, i As Long
    
    strFileName = "e:\daten\excel\data\db1.mdb"
    
    Set adoConnection = CreateObject("ADODB.Connection")
    adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strFileName & ";"
    
    Set adoCmd = CreateObject("ADODB.Command")
    adoCmd.ActiveConnection = adoConnection
    adoCmd.CommandType = adCmdText
    
    lngRow = 6
    Do While Cells(lngRow, 2).Value <> ""
        With adoCmd
            .CommandText = "INSERT INTO Tabelle1 (B,C) VALUES (" & _
                Cells(lngRow, 2).Value & ",'" & Cells(lngRow, 3).Value & "')"
            .Execute i
            'Debug.Print i; " Datensätze hinzugefügt"
        End With
        lngRow = lngRow + 1
    Loop
    adoConnection.Close
    Set adoCmd = Nothing
    Set adoConnection = Nothing
End Sub



Anzeige
AW: Export nach Access
05.03.2008 12:50:03
Hans
Hallo Bernd
Besten Dank für die beiden Codes. Leider funktionieren sie bei mir nicht. Langsam zweifle ich dran, ob es an den Umgebungsbedingungen liegt...
Ich machs den Export weiterhin manuell..
thx & cu
Hans Peter

AW: Export nach Access
05.03.2008 13:04:00
bst
Hi Hans-Peter,
was geht denn bei Dir nicht? Und welche Fehlermeldung bekommst Du denn?
cu, Bernd

AW: Export nach Access
05.03.2008 13:49:00
Hans
Fehlermeldungen kommen keine;
aber leider werden auch keine Daten nach Access exportiert.
Evtl. stimmt eine Einstellung (evtl. ein Verweis) nicht oder die Systemumgebung lässt den Export nicht zu.
Ich dank' Dir für Deine Bemühungen - aber ich geb' auf und machs weiterhin von Hand.
Gruss
Hans Peter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige