Hallo an alle!
Ich möchte gerne meine Daten in eine Excel worksheet schreiben aus einer Access Abfrage.
Alles kein großes Problem ausser das ich einen tblFahrten mit tblObjekte mehrfach verknüpft habe.
Also Fahrt_Von und Fahrt_Bis sind mit der tblObjekte verknüpft.
Auch das ist ja kein Problem nur möchte ich nun diese Daten in mein Excel Worksheet übertragen mit einem Recordset.
Alles funktioniert aber wenn ich Obj_Name also field angebe dann bekomme ich einen Laufzeitfehler 3265 Element in dieser Auflistung nicht gefunden.
Ich habe in der qryAbrechnung das Feld "Obj_Name" mit einem Alias versehen und das probiert aber trotzdem funktioniert es nicht.
Kann mir jemand sagen wie man dieses Problem lösen könnte?
Vielen Dank
Albert
Wie wäre es mit dem Anschauen und Analysieren des Codes, der dafür zuständig ist?
Hallo Eberhard,
anbei der Code und ein Bild der Abfrage.
Sub WriteToExcel()
Dim appExcel As Excel.Application
Dim wbkExcel As Excel.Workbook
Dim wksExcel As Excel.Worksheet
Dim rngExcel As Excel.Range
Dim rcsK As Recordset
Dim lngZeile As Long
Dim lngZaehler As Long
Set appExcel = Excel.Application
Set wbkExcel = appExcel.Workbooks.Open(CurrentProject.Path & "\Stefan_Excel.xlsx", AddToMru:=False)
appExcel.Visible = True
Set wksExcel = wbkExcel.Worksheets("Stundenaufzeichnung")
Set rngExcel = wksExcel.UsedRange
lngZeile = wksExcel.Cells(Rows.Count, 1).End(xlUp).Row
Set rcsK = CurrentDb.OpenRecordset("qryAbrechnung", dbOpenDynaset)
lngZaehler = lngZeile + 1 'Damit in der ersten freien Zeile geschrieben wird
Do Until rcsK.EOF
wksExcel.Cells(lngZaehler, 1).Value = rcsK.Fields("Fahrt_Datum").Value
wksExcel.Cells(lngZaehler, 2).Value = rcsK.Fields("Klient_NameBerechnet").Value
' wksExcel.Cells(lngZaehler, 3).Value = rcsK.Fields("Obj_Name").Value 'Feldname der ersten Verknüpfung
' wksExcel.Cells(lngZaehler, 4).Value = rcsK.Fields("Bis").Value 'Feldname der zweiten Verknüpfung Alias name .. Probe!
rcsK.MoveNext
lngZaehler = lngZaehler + 1
Loop
End Sub
Zitatdas Feld "Obj_Name" mit einem Alias versehen
Der Alias wirkt als Feldname nach außen und wäre somit auch zwingend in der Felderauflistung des Recordsets zu verwenden.
Hallo Eberhard,
das hab ich schon versucht den im Recordset zu benennen das geht aber leider nicht.
Schöne Grüße
Hallo,
na, was hast Du genau versucht?
.
.
wksExcel.Cells(lngZaehler, 3).Value = rcsK.Fields("Von") 'Alias-Namen einsetzen!
wksExcel.Cells(lngZaehler, 4).Value = rcsK.Fields("Bis")
.
.
Zitatden im Recordset zu benennen
Wieder mal keine Ahnung, was Du machst. Das Recordset übernimmt einfach die Feldnamen aus der Abfrage, da gibt es nichts umzubenennen.
Daneben könnte man aus Einfachheitsgründen, besonders aber aus Performancegründen auf Schleifen und Einzelwertzuweisungen verzichten und etwas Massendatenverarbeitung betreiben:
wksExcel.Cells(lngZaehler, 1).CopyFromRecordset rcsKNebenbei spielen dann hier die Feldnamen auch keine Rolle mehr. Man sollte aber in der Abfrage die Felder in der gewünschten Reihenfolge haben.
Zitatmit mehrfach verbundener Tabelle
Es will mir nicht gelingen, diese Formulierung des Thementitels in irgendeiner Form inhaltlich im Thema wiederzufinden. Hat das jetzt eine Bedeutung oder ist das IM?
Hallo nochmal,
Die Tabelle tblObjekte wird wie in dem Screenshot gezeigt zweimal mit der tblFahrten verknüpft und konnte beim erstellen des threads leider nicht den richtigen Namen dazu finden deshalb dachte ich könnte ich das mehrfachverknüpft nennen was aber natürlich wie richtig bemerkt der falsche Name ist. Deshalb hätte ich auch einen Screenshot angehängt wo man die Verknüpfung sehen und vielleicht erkennt um was es mit der "mehrfachverknüpfung" geht.
Hoffe das es nicht ein allzugroßes Problem ist.
@Franz. Ich habe versucht in der Abfrage einen Alias namen zu verwenden..........Von:[MeinFeldname] und dann diesen
wksExcel.Cells(lngZaehler,3).value= rcsK.Fiels("Von").Value probiert das geht aber leider nicht
weiteres habe ich folgendes versucht
wksExcel.Cells(lngZaehler,3).value= rcsK.Fiels("Obj_Name").Value auch kein Erfolg
ich bekomme immer den selben Laufzeitfehler den ich ja schon beschrieben habe.
Nochmal zum Problem:
Es sollen Daten aus der Abfrage in eine Excel Tabelle geschrieben werden. Die Excel Tabelle ist aber eine Vorlage eines "Kunden" die nicht geändert werden kann oder darf und dann an den Kunden ausgefüllt zurück gesendet wird. Deshalb kann ich nicht einfach die ganze Abfrage mit Copy übertragen sondern muß die Daten der Abfrage in der gewünschten Spalte der Excel Tabelle eintragen. Und das wollte ich über VBA schaffen.
Danke nochmal
Hallo,
die Verwendung von Alias-Namen in der Abfrage wird bei OpenRecordset einwandfrei unterstützt.
Vermutlich machst Du einen anderen Fehler.
Wenn der Code mit C&P hereingestellt wurde, dann ist hier etwas falsch:
ZitatIch habe versucht in der Abfrage einen Alias namen zu verwenden..........Von:[MeinFeldname] und dann diesen
wksExcel.Cells(lngZaehler,3).value= rcsK.Fiels("Von").Value probiert das geht aber leider nicht
weiteres habe ich folgendes versucht
wksExcel.Cells(lngZaehler,3).value= rcsK.Fiels("Obj_Name").Value auch kein Erfolg
Oder Du verwendest eine andere Abfrage als gezeigt, in der diese Aliase, bzw. Feldnamen nicht vorkommen.
Hallo,
nein hab mich nur verschrieben nicht C&P gemacht.
Do Until rcsK.EOF
wksExcel.Cells(lngZaehler, 1).Value = rcsK.Fields("Fahrt_Datum").Value
wksExcel.Cells(lngZaehler, 2).Value = rcsK.Fields("Klient_NameBerechnet").Value
' wksExcel.Cells(lngZaehler, 3).Value = rcsK.Fields("Von").Value 'Feldname der ersten Verknüpfung
' wksExcel.Cells(lngZaehler, 4).Value = rcsK.Fields("Bis").Value 'Feldname der zweiten Verknüpfung
rcsK.MoveNext
lngZaehler = lngZaehler + 1
Loop
ma ich verstehe es nicht dachte ich hätte das alles ausprobiert wie oben der Code jetzt steht.
Jetzt geht es ..
Ma tut mir sehr leid!!!
Danke nochmal an alle!