Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
676to680
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
676to680
676to680
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Profi Problem

VBA Profi Problem
07.10.2005 08:36:24
kerstin
also, ich möchte daten von access automatisiert nach excel bekommen.
ich nehme eine volle access DB habe nachfolgenden code in die VBA umgebung von excel geschrieben und den haken bei microsoft active x data objekts 2.8 library gesetzt!
und nun erhalte ich einen unbekanten laufzeitfehler!!!!
kann mir jem. sagen was ich falsch mache? hier der code:

Sub DBZugriff()
Dim cn As Connection
Dim rs As Recordset
Dim SQLString As String
Dim xx As Worksheet
Dim i As Integer, j As Integer
Set xx = Worksheets("Tabelle1")
Const DBPfad = "D:\Meinordner\db1.mdb"
'Die datenbank öffnen
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"   'für Access 2000 und höher
.ConnectionString = "Data Source=" & DBPfad
.Open
End With
'Definieren was geholt werden soll - hier alles
SQLString = "SELECT* FROM Tabelle1" '
Set rs = New ADODB.Recordset
rs.Open SQLString, cn, adOpenDynamic, adLockReadOnly
'Die Feldnamen der Datenbanktabelle in die erste Zeile der Exceltabelle "Tabelle1" schreiben
For j = 0 To rs.Fields.Count - 1
xx.Cells(1, j + 1) = rs.Fields.Item(j).Name
Next
'Jetzt alle Sätze holen und in die Exceltabelle schreiben
i = 1
rs.MoveFirst
Do While rs.EOF = False
i = i + 1
For j = 0 To rs.Fields.Count - 1
If IsNull(rs.Fields.Item(j).Value) = False Then
xx.Cells(i, j + 1) = rs.Fields.Item(j).Value
End If
Next
rs.MoveNext
Loop
rs.Close
cn.Close
End Sub

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Profi Problem
07.10.2005 09:04:47
Oberschlumpf
Beitrag-Funktion
Zeigt einen Hinweis darauf, dass ein Forum-Teilnehmer eine Frage hat, eine Antwort geben möchte, eine allgemeine Bemerkung geben möchte.
Syntax
Beitrag begrüßungsformel,
[ Name ], Text, Schlussformel,
Die Syntax der Beitrag-Funktion verwendet die folgenden Argumente:
Teil Beschreibung
begrüßungsformel Erforderlich. Ein Zeichenfolgenausdruck, der den landesüblichen Geflogenheiten entspricht.
Eine Auswahl möglicher Werte kann der folgenden Zeile entnommen werden.
"Hallo", "Hi", "Guten Tag"
Auch die Verwendung von umgangssprachlichen Angaben, wie z Bsp "Moin" oder "Tach" ist möglich.
name Optional. Ein Zeichenfolgenausdruck, der mit Hilfe des Argumentes
begrüßungsformel die gewünschte Zielgruppe einschränkt.
text Erforderlich. Ein Zeichenfolgenausdruck, der Auskunft über das eigentliche Anliegen des Fragenden gibt.
Der Inhalt ist frei wählbar, sollte jedoch freundlich und qualifiziert gestaltet werden.
Denn eine qualifizierte Antwort erfordert eine qualifizierte Frage.
schlussformel Erforderlich. Ein Zeichenfolgenausdruck, der den landesüblichen Geflogenheiten entspricht.
Eine Auswahl möglicher Werte kann der folgenden Zeile entnommen werden.
"Ciao", "Gruß", "viele Grüße", "Tschüss"
Auch hier ist die Verwendung von umgangssprachlichen Angaben, wie z Bsp "und wech..." möglich.
Zusätzlich möglich ist es, dass schlussformel den eigenen Namen und/oder den Wert aus name enthält.

Vielleicht versteht auch der Ersteller dieses Threads jetzt, dass ein Beitrag ohne Begrüßungs- und Schlussformel nicht wirklich vollständig ist.
In diesem Sinne... :-)
Thorsten
Hi Kerstin
Ich habe deinen Code mit einer meiner Access-Datenbanken getestet...und...es trat kein Fehler auf - der Code lief problemlos durch und alle Felder wurden in die Excel-Tabelle übertragen.
Wo genau tritt den bei dir der Fehler auf - in welcher Code-Zeile?
Ciao
Thorsten
Anzeige
AW: VBA Profi Problem
07.10.2005 09:09:40
kerstin
guten morgen lieber thorsten!
an dieser stelle:
ConnectionString = "Data Source=" & DBPfad
.Open
End With
Mit freundlichen grüßen
kerstin
AW: VBA Profi Problem
07.10.2005 09:21:11
Oberschlumpf
Hi Kerstin (es geht doch :-) )
Leider kann ich deinen Fehler nicht rekonstruieren.
Wenn ich die Const DBPFad ändere, also einen falschen Pfad zur Datenbank gebe, erscheint nur in der Zeile
.Open
die direkt auf deine Fehlerzeile folgt, ein Laufzeitfehler, dass ein Zugriff auf die angegebene MDB-Datei nicht möglich ist.
Eine andere Idee, die direkt deinen Code betrifft, habe ich leider nicht.
Aber vielleicht versuchst du es mal, in dem du die ganze Excel-Tabelle incl. VBA-Code in eine neue Excel-Tabelle einfügst.
Oder kopiere doch einfach nur erst mal zum Testen den Code, den du hier vorgestellt hast in eine neue Excel-Tabelle und probiere dann aus.
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: VBA Profi Problem
07.10.2005 09:40:08
kerstin
lieber Thorsten, danke für die hilfe, aber das klappt leider auch nicht!
verstehe das nicht ... :-(((
mfg
kerstin
AW: VBA Profi Problem
07.10.2005 09:44:42
Oberschlumpf
Huhu
hmm...das ist blöd :-(
Kannst du die Problem-Datei vielleicht mal auf dem Server speichern?
Wenn die Datei vertrauliche Daten enthält, kannst du dann vielleicht die Datei nur mit Beispieldaten versehen?
Ciao
Thorsten
AW: VBA Profi Problem
07.10.2005 09:47:56
gordon
Hi Kerstin,
hättest Du auch noch an den alten Thread von gestern hängen können ;-)
Aber sei es drum:
Tabelle1 ist Name für Excel Sheet UND auch der Name der Tabelle un Deiner DB ?
Nochmal ALLE Namen - auch evtl. Leerzeichen - genau vergleichen und auch die Ablageorte.
Vermute nach wie vor Stringfehler
Strohhalm: welche Access Version hast DU ?
Gruß
gordon
Anzeige
SQL-Befehl direkt auf DB absetzen
07.10.2005 09:50:46
gordon
Hi, was vergessen:
Was liefert Dein SQL-Befehl direkt in Access ?
Gruß
gordon
AW: SQL-Befehl direkt auf DB absetzen
07.10.2005 09:56:42
kerstin
hmm, wie komm ich dazu?
bitte blondinenfreundlich erläutern :-)))) danke
lg
AW: SQL-Befehl direkt auf DB absetzen
07.10.2005 10:13:34
gordon
Große Bitte:
Beantworte doch netterweise alle Fragen ;-)
Stringvergleich durchgeführt ?
alle Namen wirklich richtig geschrieben ?
Welche Access Version ?
SQL auf Access direkt z.B., indem Du eine Abfrage erstellst, dort in die SQL-Ansicht wechselst (quasi ein SQL-Editor), ggfls. vorhandene SQL-Befehle entfernst und Deinen Befehl dort einträgst.
Dann diese Abfrage ausführen (Ansicht . Wenn dann ein Ergebnis kommt, ist zumindest schon mal der SQL-Befehl syntaktisch richtig.
Gruß
gordon
Anzeige
AW: VBA Profi Problem
07.10.2005 09:53:18
kerstin
hallo gordon, schön dass du auch wieder da bist. zu deiner frage, ja, ist ja nur zum testen da!lg kerstin
AW: VBA Profi Problem
07.10.2005 09:51:22
kerstin
hi, warum soll icg die datei auf dem server speichern?
lg kerstin
hab vergessen,den Thread wieder zu öffnen - o.T.
07.10.2005 09:22:02
Oberschlumpf
AW: VBA Profi Problem
07.10.2005 09:44:43
ede
hallo kerstin,
ist das hier ein schreibfehler?
SQLString = "SELECT* FROM Tabelle1" '
ich hätte es so geschrieben
'SQLString = "SELECT * FROM Tabelle1" '
AW: VBA Profi Problem
07.10.2005 09:50:16
kerstin
hi ede, nein, eigentlich nicht... mfg
AW: VBA Profi Problem
07.10.2005 09:59:27
ede
hallo kerstin,
kann dein fehler nicht nachvollziehen, bei mir läuft dein code problemlos
gruss
AW: VBA Profi Problem
07.10.2005 10:00:45
kerstin
:-)
ich ja auch nicht, deswegen such ich hier ja hilfe!
lg
an ede, gordon und oberschlumpf!!!!
07.10.2005 10:05:56
kerstin
hallo ede, gordon und oberschlumpf!
ihr habt das ganze doch selbst an ner testdatenbank versucht und bei euch ging das!
falls es möglich ist, dürfte ich mir das mal anschauen( es sind kleine, gerade schnell mal angelegte DB s oder?)? das wär mir eine große hilfe, da ich dann ev. meinen fehler finde! lg eure kerstin
Anzeige
AW: an ede, gordon und oberschlumpf!!!!
07.10.2005 10:22:56
Oberschlumpf
Hi Kerstin
Nee, kann dir nicht so ohne weiteres meine DB zur Verfügung stellen.
Ich hab das mit einer schon bestehenden getestet, und die ist fast 2 MB groß :-)
Aber das tut auch nicht Not, denn dein VBA-Code funktioniert ja super - bei mir :-)
Ich musste nur den Pfad und die Namen der DB-Tabelle anpassen, mehr nicht.
Deine Frage, warum du die Datei(en) (Excel- und Access-Datei) auf dem Server speichern sollst, beantworte ich damit, damit wir den vollständigen Code sehen können, die MDB-Datei sehen können.
Vielleicht können wir dann zumindest gedanklich den Fehler nachvollziehen.
Bis später vielleicht :-)
Ciao
Thorsten
Anzeige
AW: an ede, gordon und oberschlumpf!!!!
07.10.2005 10:36:42
kerstin
hi thorsten, alles klar, verstehe, logisch mit deiner datenbank :-)
bei mir ist das auch so! lg
AW: an ede, gordon und oberschlumpf!!!!
07.10.2005 10:54:13
ede
hallo kerstin,
anbei meine kleine testdatenbank, bitte die anlage wieder von txt zu mdb umbenennen.
https://www.herber.de/bbs/user/27287.txt
gruss
AW: an ede, gordon und oberschlumpf!!!!
07.10.2005 11:06:58
kerstin
dank dir! lg
AW: an ede, gordon und oberschlumpf!!!!
07.10.2005 11:10:21
kerstin
oh, ich kanns ned öffnen ede...
AW: an ede, gordon und oberschlumpf!!!!
07.10.2005 11:15:11
ede
hallo kerstin,
habe die access-datenbank mit access 2000 erstellt!
hast du damit ein problem?
gruss
AW: an ede, gordon und oberschlumpf!!!!
07.10.2005 11:27:01
kerstin
kann es nicht öffnen!
sagst mir mal bitte deinen pfad und DB name
und datenbanktabelle (wenn es dir nichts ausmacht)und schickst mir den code dazu? das wär super lieb, denn ich glaub ich hab da irgendeinen denkfehler bei mir drin, weil es ja nicht läuft!
lg und tausend dank
kerstin
Anzeige
AW: an ede, gordon und oberschlumpf!!!!
07.10.2005 11:34:25
ede
hallo kerstin,
also ich habe die Accessdatenbank unter c:\temp\db1.mdb
dazu die als text-Datei bereits bereitgestellte datei einfach bei dir unter c:\temp speichern und von 27287.txt zu db1.mdb umbenennen
meine verwendeten code hier nochmal zum rauskopieren in ein neues Modul einer neuen Excel-Datei!

Sub DBZugriff()
Dim cn As Connection
Dim rs As Recordset
Dim SQLString As String
Dim xx As Worksheet
Dim i As Integer, j As Integer
Set xx = Worksheets("Tabelle1")
Const DBPfad = "C:\temp\db1.mdb"
'Die datenbank öffnen
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"   'für Access 2000 und höher
.ConnectionString = "Data Source=" & DBPfad
.Open
End With
'Definieren was geholt werden soll - hier alles
SQLString = "SELECT * FROM Tabelle1" '
Set rs = New ADODB.Recordset
rs.Open SQLString, cn, adOpenDynamic, adLockReadOnly
'Die Feldnamen der Datenbanktabelle in die erste Zeile der Exceltabelle "Tabelle1" schreiben
For j = 0 To rs.Fields.Count - 1
xx.Cells(1, j + 1) = rs.Fields.Item(j).Name
Next
'Jetzt alle Sätze holen und in die Exceltabelle schreiben
i = 1
rs.MoveFirst
Do While rs.EOF = False
i = i + 1
For j = 0 To rs.Fields.Count - 1
If IsNull(rs.Fields.Item(j).Value) = False Then
xx.Cells(i, j + 1) = rs.Fields.Item(j).Value
End If
Next
rs.MoveNext
Loop
rs.Close
cn.Close
End Sub

Ich hoffe ich konnte Dir helfen
Anzeige
AW: an ede, gordon und oberschlumpf!!!!
07.10.2005 11:42:33
kerstin
vielen dank! echt lieb von dir!
ich schau mir das ganze nochmal am montag durch! habe jetzt eine denksperre :-)
bist du mo. auch wieder da? sag dir auf alle fälle noch bescheid!
vielen dank, libe grüße und schönes weekend!
kerstin
AW: an ede, gordon und oberschlumpf!!!!
07.10.2005 11:35:28
GerdZ
Hallo Kerstin,
wie lautet eigentlich die komplette Fehlermeldung?
Gruß
Gerd
AW: an ede, gordon und oberschlumpf!!!!
07.10.2005 11:44:56
kerstin
hi gerd! das wäre:
laufzeitfehler '- 2147467259 (80004005)
automatisierungsfehler
unbekannter fehler
seltsam, oder?
lg kerstin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige