Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

einzelne Spalten in bestehende Excel Tabelle exportieren

392 views
Skip to first unread message

Martin Hülle

unread,
Apr 23, 2010, 10:37:01 AM4/23/10
to
Hallo Community,

Ich habe ein ernsthaftes Problem und ich suche mich in diversen Foren dumm
und dusselig nach einer lösung.

Ich würde Gerne aus einer Access DB aus einer Tabelle die eine bestimmte
Spalte nehmen und diese in eine Bestehende Excel Tabelle einfügen.

Die Daten sollen ohne Überschrift (sehr wichtig) in die dritte zeile (und
abwärts ) abgelegt werden.

Das größte Problem von allen ist aber : Das Makro was dies alles machen soll
muss aus Excel heraus agieren, da ich die DB´s nicht ändern kann und diese
auch immer wieder neu erzeugt werden ( Name ist aber immer bekannt)

Ist dies überhaupt möglich oder muss ich wieder was unmögliches suchen?


--
_
"Even if the morrow is barren of promisses
Nothing shall forestall my return
to become the dew that quenches the land
to spare the sands, the seas, the skies
I offer thee this silent sacrifice"

Mark Doerbandt

unread,
Apr 23, 2010, 11:33:19 AM4/23/10
to
Hallo, Martin,

Martin Hülle:

> Ich würde Gerne aus einer Access DB aus einer Tabelle die eine bestimmte
> Spalte nehmen und diese in eine Bestehende Excel Tabelle einfügen.
>
> Die Daten sollen ohne Überschrift (sehr wichtig) in die dritte zeile (und
> abwärts ) abgelegt werden.
>
> Das größte Problem von allen ist aber : Das Makro was dies alles machen soll
> muss aus Excel heraus agieren, da ich die DB´s nicht ändern kann und diese
> auch immer wieder neu erzeugt werden ( Name ist aber immer bekannt)

klar geht das. Das Stichwort lautet Automatisierung, in diesem Fall
von Excel nach Access. Du hast aber in Excel genauso VBA und kannst
das machen. Schau mal z.B. hier

http://www.exceltip.com/st/Import_data_from_Access_to_Excel_%28ADO%29_using_VBA_in_Microsoft_Excel/427.html

Gruss - Mark

--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.

Martin Hülle

unread,
Apr 28, 2010, 5:07:01 AM4/28/10
to
Hallo Mark
sry das ich mich jetzt erst melde hatte leider probs das i net nachschaun
konnte.

Habe mir das Coding mal angeschaut aber ganz durchsteigen tu ich nicht
wirklich.

Coding :

Sub ADOImportFromAccessTable(DBFullName As String, _
TableName As String, TargetRange As Range)
' Example: 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

Dies wollte ich einmal aufrufen mit einer testsub ,
Sub test()

ADOImportFromAccessTable "U:\testordner_ausleitung\Arbeitsergebnisse.accdb", _
"Arbeitsergebnisse", Range("O3")

End Sub

Doch es schreibt mir einen Fehler :
RS2WS nicht definiert.

Außerdem raff ich grade net wo ich ihm sagen kann welche spalten ich haben
will (sind idr Spalte 1 und 2 oder eine einzelne)

Vieleicht kannst du mich ja ein wenig aufschlaun da ich mit der Lib noch nie
gearbeitet habe

MfG Martin

--
_
"Even if the morrow is barren of promisses
Nothing shall forestall my return
to become the dew that quenches the land
to spare the sands, the seas, the skies
I offer thee this silent sacrifice"


"Mark Doerbandt" schrieb:

> .
>

Mark Doerbandt

unread,
Apr 28, 2010, 9:26:57 AM4/28/10
to
Hallo, Martin,

Martin Hülle:

in dem Kommentar steht doch:

"for Excel 2000 or later (RS2WS is not necessary)"

- also kommentiere die zeile mit RS2WS mal aus.

> Außerdem raff ich grade net wo ich ihm sagen kann welche spalten ich haben
> will (sind idr Spalte 1 und 2 oder eine einzelne)

dort:

TargetRange.Offset(0, intColIndex).Value = rs.Fields(intColIndex).Name

Martin Hülle

unread,
Apr 28, 2010, 10:15:01 AM4/28/10
to
Ok nun verwirrts mich endgültig.

> > cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
> > DBFullName & ";"

wirft mir einen Fehler, er erkennt die DB nicht. Welches Format unterstützt
dies denn ?


> - also kommentiere die zeile mit RS2WS mal aus.

Uhm ja da hat mein english ausgesetzt, dann brauch ich mich ja nicht
wundern. Aber soll ich dafür den Code im Comment einfügen ?

> TargetRange.Offset(0, intColIndex).Value = rs.Fields(intColIndex).Name

Ok und wie ? über den namen oder werte ??

Mark Doerbandt

unread,
Apr 28, 2010, 10:36:44 AM4/28/10
to
Hallo, Martin,

Martin Hülle:

>>> cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
>>> DBFullName & ";"

> wirft mir einen Fehler, er erkennt die DB nicht. Welches Format unterstützt
> dies denn ?

das ist aber neu - dürfte an Deiner .accdb liegen. Du musst den
Connection-String anpassen oder eine .mdb verwenden.

http://connectionstrings.com/

> aber soll ich dafür den Code im Comment einfügen ?

hattest Du doch schon.

>> TargetRange.Offset(0, intColIndex).Value = rs.Fields(intColIndex).Name
>
> Ok und wie ? über den namen oder werte ??

da hast Du eine Zuordnung der Spalte im Excel (intColIndex links) zu
der Spalte der Abfrage (intColIndex rechts) - hier kannst Du ggf.
ändern.

Martin Hülle

unread,
Apr 29, 2010, 5:40:01 AM4/29/10
to

Hallo Mark,

ich merke du bist sehr versiert nur leider verstehe ich nur Bahnhof....

> das ist aber neu - dürfte an Deiner .accdb liegen. Du musst den
> Connection-String anpassen oder eine .mdb verwenden.
>
> http://connectionstrings.com/

Habe mal MDB getestet, wirft den selben fehler, Brauch er da den Pfad oder
nur den Dateinamen ?

Connection.String sagt mir nicht viel und auf dem Link weiß ich nicht wonach
ich suchen sollte ...

> >> TargetRange.Offset(0, intColIndex).Value = rs.Fields(intColIndex).Name
> >
> > Ok und wie ? über den namen oder werte ??
>
> da hast Du eine Zuordnung der Spalte im Excel (intColIndex links) zu
> der Spalte der Abfrage (intColIndex rechts) - hier kannst Du ggf.
> ändern.

hm Ok da bastel ich mal rum, nur muss ich ersteinmal rausfinden wie ich
weiter am Fehler vorbei komme ^^
Muss ich warscheinlich am Offset rumschrauben so wie ichs verstanden habe
oder ?

Code:


For intColIndex = 0 To rs.Fields.Count - 1

Wenn ich die überschrift auslassen will muss ich hier statt 0 nur 1 sagen
odeR ?

Gunter Avenius

unread,
Apr 29, 2010, 6:33:13 AM4/29/10
to
Hallo Martin,

Martin H�lle schrieb folgendes:


> ich merke du bist sehr versiert nur leider verstehe ich nur Bahnhof....
>

>> das ist aber neu - d�rfte an Deiner .accdb liegen. Du musst den


>> Connection-String anpassen oder eine .mdb verwenden.
>>
>> http://connectionstrings.com/
>
> Habe mal MDB getestet, wirft den selben fehler, Brauch er da den Pfad oder
> nur den Dateinamen ?
>

> Connection.String sagt mir nicht viel und auf dem Link wei� ich nicht wonach
> ich suchen sollte ...

Das ist ein Connection String:
> > ... "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
> > DBFullName & ";"

F�r accdb findet Du einen passenden unter:
http://connectionstrings.com/access-2007


Gru�
Gunter
--
__________________________________________________________
Access FAQ: http://www.donkarl.com

http://www.avenius.com - http://www.AccessRibbon.de
http://www.ribboncreator.de - http://www.ribboncreator2010.de

Martin Hülle

unread,
Apr 29, 2010, 9:37:02 AM4/29/10
to
Super hab das richtige gefunden und konnte es importieren, nur leider nimmt
das Coding den Kompletten (!!!) datensatz, ich möchte aber von jedem
Datensatz nur eine Bestimmte Spalte

z.B. im ersten Fall spalte 1 und 2 ( nur damitr kann ich weiterarbeiten)
im anderen Fall Spalte 7

und nocheine Frage, überschreibt das Makro eigentlich vorhandene daten oder
wirft er Fehler ?

MfG Martin

--
_
"Even if the morrow is barren of promisses
Nothing shall forestall my return
to become the dew that quenches the land
to spare the sands, the seas, the skies
I offer thee this silent sacrifice"


"Gunter Avenius" schrieb:

> Hallo Martin,
>
> Martin Hülle schrieb folgendes:


> > ich merke du bist sehr versiert nur leider verstehe ich nur Bahnhof....
> >

> >> das ist aber neu - dürfte an Deiner .accdb liegen. Du musst den


> >> Connection-String anpassen oder eine .mdb verwenden.
> >>
> >> http://connectionstrings.com/
> >
> > Habe mal MDB getestet, wirft den selben fehler, Brauch er da den Pfad oder
> > nur den Dateinamen ?
> >

> > Connection.String sagt mir nicht viel und auf dem Link weiß ich nicht wonach

> > ich suchen sollte ...
>
> Das ist ein Connection String:
> > > ... "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
> > > DBFullName & ";"
>

> Für accdb findet Du einen passenden unter:
> http://connectionstrings.com/access-2007
>
>
> Gruß


> Gunter
> --
> __________________________________________________________
> Access FAQ: http://www.donkarl.com
>
> http://www.avenius.com - http://www.AccessRibbon.de
> http://www.ribboncreator.de - http://www.ribboncreator2010.de

> .
>

Mark Doerbandt

unread,
Apr 29, 2010, 11:08:18 AM4/29/10
to
Hallo, Martin,

Martin H�lle:

> Super hab das richtige gefunden und konnte es importieren, nur leider nimmt

> das Coding den Kompletten (!!!) datensatz, ich m�chte aber von jedem

> Datensatz nur eine Bestimmte Spalte
>
> z.B. im ersten Fall spalte 1 und 2 ( nur damitr kann ich weiterarbeiten)
> im anderen Fall Spalte 7

die daf�r zust�ndige Zeile hatten wir doch schon besprochen.

Wenn Du abh�ngig von den Inhalten etwas schreiben m�chtest, muss eben
ein If Then Else drumherum. Wie lauten die genauen Regeln?

> und nocheine Frage, �berschreibt das Makro eigentlich vorhandene daten oder
> wirft er Fehler ?

Es d�rfte ein leichtes sein, das zu probieren.

Gruss - Mark

--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beitr�ge senden.

Martin Hülle

unread,
Apr 30, 2010, 4:47:01 AM4/30/10
to
Habe mal rumprobiert,

Die besprochene Zeile sorgt leider nur dafür das ich ihm sagen kann
das er die Datensätze ab einer gewissen Zeile nehmen soll,das funktioniert
ja auch.

nur nimmt er halt die ganzen Datensätze was ich ja gar nicht brauche. . .

ich könnte umständlich an die sache herangehen und die Spalten die ich nicht
haben möchte in Excel löschen und dann alles an die richtige stelle kopieren,
nur das ist ja nicht im sinn der sache ...

--
_
"Even if the morrow is barren of promisses
Nothing shall forestall my return
to become the dew that quenches the land
to spare the sands, the seas, the skies
I offer thee this silent sacrifice"


"Mark Doerbandt" schrieb:

> Hallo, Martin,
>
> Martin Hülle:
>

> > Super hab das richtige gefunden und konnte es importieren, nur leider nimmt

> > das Coding den Kompletten (!!!) datensatz, ich möchte aber von jedem

> > Datensatz nur eine Bestimmte Spalte
> >
> > z.B. im ersten Fall spalte 1 und 2 ( nur damitr kann ich weiterarbeiten)
> > im anderen Fall Spalte 7
>

> die dafür zuständige Zeile hatten wir doch schon besprochen.
>
> Wenn Du abhängig von den Inhalten etwas schreiben möchtest, muss eben


> ein If Then Else drumherum. Wie lauten die genauen Regeln?
>

> > und nocheine Frage, überschreibt das Makro eigentlich vorhandene daten oder
> > wirft er Fehler ?
>
> Es dürfte ein leichtes sein, das zu probieren.


>
> Gruss - Mark
>
> --
> Informationen fuer Neulinge in den Access-Newsgroups unter
> http://www.doerbandt.de/Access/Newbie.htm
>

> Bitte keine eMails auf Newsgroup-Beiträge senden.
> .
>

Mark Doerbandt

unread,
Apr 30, 2010, 4:56:38 AM4/30/10
to
Hallo, Martin,

Martin H�lle:

> Habe mal rumprobiert,
>
> Die besprochene Zeile sorgt leider nur daf�r das ich ihm sagen kann
> das er die Datens�tze ab einer gewissen Zeile nehmen soll,das funktioniert
> ja auch.
>
> nur nimmt er halt die ganzen Datens�tze was ich ja gar nicht brauche. . .
>
> ich k�nnte umst�ndlich an die sache herangehen und die Spalten die ich nicht
> haben m�chte in Excel l�schen und dann alles an die richtige stelle kopieren,

> nur das ist ja nicht im sinn der sache ...

was willst Du genau sagen?

Die Zeile hat mit Zeilen nix zu tun, sondern mit Spalten: intColIndex
ist der Index einer Spalte. In dieser Zeile wird die Kopfzeile mit den
Feldnamen geschrieben. Die Daten folgen dann mit .CopyFromRecordset.
Wenn Du weniger Spalten m�chtest, nimm die nicht ben�tigten doch
einfach aus der Abfrage heraus, statt

SELECT * FROM

nur

SELECT DeinFeld FROM

...

Gruss - Mark

--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beitr�ge senden.

Martin Hülle

unread,
Apr 30, 2010, 6:08:01 AM4/30/10
to
paling jetzt hab ichs gerafft ^^

nur bekomme ich jetzt einen Fehler wenn ich versuche 2 Spalten so zu nehmen

.Open "SELECT " & feldname & "AND" & feldname2 & " FROM " & TableName, cn, ,
, adCmdText

Feldname und feldname 2 werden beim aufruf sofort gefüllt ( mit "ID" und
"Titel")

doch sagt er mir das 1 erforderlicher Parameter nicht gefüllt sei,
nur welchen verschweigts mir mal wieder ...


--
_
"Even if the morrow is barren of promisses
Nothing shall forestall my return
to become the dew that quenches the land
to spare the sands, the seas, the skies
I offer thee this silent sacrifice"


"Mark Doerbandt" schrieb:

> Hallo, Martin,
>
> Martin Hülle:
>
> > Habe mal rumprobiert,
> >
> > Die besprochene Zeile sorgt leider nur dafür das ich ihm sagen kann
> > das er die Datensätze ab einer gewissen Zeile nehmen soll,das funktioniert
> > ja auch.
> >
> > nur nimmt er halt die ganzen Datensätze was ich ja gar nicht brauche. . .
> >
> > ich könnte umständlich an die sache herangehen und die Spalten die ich nicht
> > haben möchte in Excel löschen und dann alles an die richtige stelle kopieren,

> > nur das ist ja nicht im sinn der sache ...
>
> was willst Du genau sagen?
>
> Die Zeile hat mit Zeilen nix zu tun, sondern mit Spalten: intColIndex
> ist der Index einer Spalte. In dieser Zeile wird die Kopfzeile mit den
> Feldnamen geschrieben. Die Daten folgen dann mit .CopyFromRecordset.

> Wenn Du weniger Spalten möchtest, nimm die nicht benötigten doch


> einfach aus der Abfrage heraus, statt
>
> SELECT * FROM
>
> nur
>
> SELECT DeinFeld FROM
>

> ....


>
> Gruss - Mark
>
> --
> Informationen fuer Neulinge in den Access-Newsgroups unter
> http://www.doerbandt.de/Access/Newbie.htm
>

> Bitte keine eMails auf Newsgroup-Beiträge senden.
> .
>

Mark Doerbandt

unread,
Apr 30, 2010, 6:17:42 AM4/30/10
to
Hallo, Martin,

Martin H�lle:

> nur bekomme ich jetzt einen Fehler wenn ich versuche 2 Spalten so zu nehmen


>
> .Open "SELECT " & feldname & "AND" & feldname2 & " FROM " & TableName, cn, ,
> , adCmdText
>

> Feldname und feldname 2 werden beim aufruf sofort gef�llt ( mit "ID" und
> "Titel")
>
> doch sagt er mir das 1 erforderlicher Parameter nicht gef�llt sei,


> nur welchen verschweigts mir mal wieder ...

probiere mal

.Open "SELECT " & feldname & " AS Bezeichnung1, " & _
feldname2 & " AS Bezeichnung2 FROM " & _


TableName, cn, , , adCmdText

Gruss - Mark

--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beitr�ge senden.

Martin Hülle

unread,
Apr 30, 2010, 8:06:02 AM4/30/10
to
Ok habe mich zu Früh gefreut ....

Normalen inhalt kopiert er mir ohne probleme, Hyperlinks jedoch verhunzt er
mit

Hyperlinktext#Hyperlinkaddresse

Könnte man da Abfragen was er einen Link oder Text kopiert oder abfangen das
er den link so kopiert wie er ist ?

--
_
"Even if the morrow is barren of promisses
Nothing shall forestall my return
to become the dew that quenches the land
to spare the sands, the seas, the skies
I offer thee this silent sacrifice"


"Mark Doerbandt" schrieb:

> Hallo, Martin,
>
> Martin Hülle:
>

> > nur bekomme ich jetzt einen Fehler wenn ich versuche 2 Spalten so zu nehmen
> >
> > .Open "SELECT " & feldname & "AND" & feldname2 & " FROM " & TableName, cn, ,
> > , adCmdText
> >

> > Feldname und feldname 2 werden beim aufruf sofort gefüllt ( mit "ID" und
> > "Titel")
> >
> > doch sagt er mir das 1 erforderlicher Parameter nicht gefüllt sei,


> > nur welchen verschweigts mir mal wieder ...
>
> probiere mal
>

> ..Open "SELECT " & feldname & " AS Bezeichnung1, " & _


> feldname2 & " AS Bezeichnung2 FROM " & _
> TableName, cn, , , adCmdText
>
> Gruss - Mark
>
> --
> Informationen fuer Neulinge in den Access-Newsgroups unter
> http://www.doerbandt.de/Access/Newbie.htm
>

> Bitte keine eMails auf Newsgroup-Beiträge senden.
> .
>

Mark Doerbandt

unread,
Apr 30, 2010, 8:43:34 AM4/30/10
to
Hallo, Martin,

Martin H�lle:

> Normalen inhalt kopiert er mir ohne probleme, Hyperlinks jedoch verhunzt er
> mit
>
> Hyperlinktext#Hyperlinkaddresse

so sieht es Access-intern aus, das ist die Art wie Hyperlinkfelder
gespeichert werden. Mich st�rt das auch, ich nehme deshalb in der
Regel ein einfaches Text- oder Memofeld und verzichte auf "Hyperlink".

> K�nnte man da Abfragen was er einen Link oder Text kopiert oder abfangen das

> er den link so kopiert wie er ist ?

Du kannst nat�rlich das Linkfeld beim Export "bearbeiten" - wie soll
es denn im Excel aussehen?

Gruss - Mark

--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beitr�ge senden.

Martin Hülle

unread,
Apr 30, 2010, 10:09:01 AM4/30/10
to
Ich brauche nur den Link (also die URL egal ob als link oder Text)

Habe eine Wenig gesucht und dann eine Formel gefunden die mir den Link
raussucht (eine spalte in ecel mehr aber es läuft ^^ )

=WENN(ISTFEHLER(RECHTS(M5;(LÄNGE(M5)-SUCHEN("#";M5))));"";RECHTS(M5;(LÄNGE(M5)-SUCHEN("#";M5))))

Wenn ist da weil ich die Formel von 3 - 1000 runter ziehe und mir das sonst
einen Zähler zerschießt

--
_
"Even if the morrow is barren of promisses
Nothing shall forestall my return
to become the dew that quenches the land
to spare the sands, the seas, the skies
I offer thee this silent sacrifice"


"Mark Doerbandt" schrieb:

> Hallo, Martin,
>
> Martin Hülle:
>

> > Normalen inhalt kopiert er mir ohne probleme, Hyperlinks jedoch verhunzt er
> > mit
> >
> > Hyperlinktext#Hyperlinkaddresse
>
> so sieht es Access-intern aus, das ist die Art wie Hyperlinkfelder

> gespeichert werden. Mich stört das auch, ich nehme deshalb in der


> Regel ein einfaches Text- oder Memofeld und verzichte auf "Hyperlink".
>

> > Könnte man da Abfragen was er einen Link oder Text kopiert oder abfangen das

> > er den link so kopiert wie er ist ?
>

> Du kannst natürlich das Linkfeld beim Export "bearbeiten" - wie soll


> es denn im Excel aussehen?
>
> Gruss - Mark
>
> --
> Informationen fuer Neulinge in den Access-Newsgroups unter
> http://www.doerbandt.de/Access/Newbie.htm
>

> Bitte keine eMails auf Newsgroup-Beiträge senden.
> .
>

0 new messages