Hallo,
besteht die Möglichkeit exportierte werte aus Access in einer Excel untereinander zu kopieren unter der Voraussetzung das es immer die selbe Excel liste ist?
über die Export Funktion lässt sich lediglich immer nur eine neue Datei erstellen.
Gruß
Natürlich.
Du kannst bspw. nach dem Stichwort CopyFromRecordset recherchieren.
Hilft mir leider nicht weiter weil man hier nur immer wieder eine Excel liste öffnet
und nicht eine bestimmte Excel Datei füttert.
Zitatweil man hier nur immer wieder eine Excel liste öffnet ...
Wenn Du aussagen willst, Du hättest ALLES dazu gesehen, hast Du Verwendung und Ausführung nicht verstanden.
Ich habe mich falsch ausgedrückt...
ich möchte nicht, dass eine neue Excel Liste erstellt wird sondern eine bestehende Excel Liste die bereits existiert gefüttert wird.
Und bei jeden ausführen die neuen Daten in die bereits existierende Liste unter den alten Daten kopiert wird.
Hallo
Meine Lösung ist zwar speziell aber falls du sonst nicht's hast könnte es dir ja helfen.
Bei jedem Export kannst du die Daten aus dem Excel importiere, die neuen Daten unten anfügen und die neue Liste als Excel exportieren. Der Export kann dann die alte Datei überschreiben.
Damit erhälst du sicherlich das gewünschte Resultat, einfach mit Umwegen. ;-)
Gruss
Redi
Deine gesuchte Funktionalität lässt sich einfach herstellen. Die Jet-Engine von Access erlaubt nicht nur den Zugriff auf Tabellen in Datenbanken, sondern auch auf Excel Tabellen. Beachte, dass es sich um eine Excel Datei im Datenformat 97-2003 handeln sollte - also mit der Endung .xls
Um die folgenden Listings verwenden zu können, musst Du dem VBA Editor noch einen Verweis zufügen. Klicke im Editor oben im Menü auf 'Extras' / 'Verweise...' und aktiviere den Verweis "Microsoft ActiveX Data Objects 6.1 Library".
Die Funktion ExcelRecordsetHolen läd die gewünschte Datei und erstellt und übergibt ein ADODB Recordset. Dieses lässt sich wie jedes gebundene Recordset vollständig bearbeiten.
Public Function ExcelRecordsetHolen(sql as String) As ADODB.Recordset
Dim exCon As New ADODB.Connection
Dim exrcs As New ADODB.Recordset
With exCon
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open "C:\PfadzurDatei\Ornder\datei.xls"
End With
With exrcs
.Source = sql
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.ActiveConnection = exCon
.LockType = adLockOptimistic
.Open
End With
Set ExcelRecordsetHolen = exrcs
Set exrcs = Nothing
End Function
Mit dieser Sub rufst Du das Ganze auf. Diese Sub holt also das Recordset und fügt einen Eintrag in der ersten Spalte hinzu. Dann werden alle Einträge in dieser Spalte im Direktfenster ausgespukt. Hier kannst Du sehen, dass tatsächlich ein neuer Eintrag den bisherigen zugefügt worden ist. Ein Speichern der Tabelle ist nicht erforderlich, da die Änderungen sofort Live in die Tabelle geschrieben werden.
Private Sub TesteExcelHolen()
Dim exrcs As ADODB.Recordset
Set exrcs = ExcelRecordsetHolen("Select * From [Tabelle1$]")
Debug.Print exrcs.RecordCount
exrcs.AddNew
exrcs.Fields(0) = "Neuer Eintrag"
exrcs.MoveFirst
Do Until exrcs.EOF
Debug.Print exrcs.Fields(0)
exrcs.MoveNext
Loop
End Sub
Also, ich mache sowas über folgenden Weg:
Per OLE in Access Excel einbinden (am besten setzt Du direkte Verweise in die Excel Bib).
Dann hangelst Du dich durch bis zum Arbeitsblatt:
dim oExcelApp As Excel.Application 'Ziel-Applikation
dim oExcelWB As Excel.Workbook 'Ziel-Mappe
Dim ws As Excel.Worksheet
Set oExcelApp = New Excel.Application
Set oExcelWB = oExcelApp.Workbooks.Open(VollständigerNameMitPfad)
Set ws = oExcelWB.Worksheets(Tabellenblattname)
Dann ermittelst Du die letzte Zeile (Google mal danach, gibts verschiedne Möglichkeiten)
Dann gehst du über das WS.Range(ws.cells(x1,y1), ws.cells(x2,y2)).CopyFromRecordset DeinRecordset
Zum Beispiel
per OLE hab ich das noch nie versucht
ehrlich gesagt hab ich auch keine Ahnung wie das gehen soll :(
Zitatehrlich gesagt hab ich auch keine Ahnung wie das gehen soll
Wenn Du keinen von den obigen Vorschlägen umsetzen willst oder kannst, könntest Du hier ein ernsthaftes Angebot machen: Job-Börse (https://www.access-o-mania.de/forum/index.php?board=17.0)
Danke für die nette Antwort
ich habe die Frage nicht umsonst gestellt! wenn ich wüsste wie das geht hätte ich nicht gefragt du Witzbold.
Aber danke trotzdem.
Hallo,
auf Excel-Dateien kannst Du mit SQL zugreifen, wobei Anfüge-, Aktualisierungs- Tabellenerstellungs- und Auswahlabfragen möglich sind. D.h., Du kannst eine Vereinigungsabfrage erstellen, diese in eine Anfüge- oder Tabellenerstellungsabfrage umwandeln und ausführen.
Zitat von: itaflo am März 05, 2019, 12:00:56
per OLE hab ich das noch nie versucht
ehrlich gesagt hab ich auch keine Ahnung wie das gehen soll :(
Hört sich wilder an als es ist.
Versuche es einfach mal. Noch mal. Der Vorteil von Access liegt in der COM-Schnittstelle, d.h. Du kannst locker auf andere Office-Applikationen wie z.B. Excel oder auch Word, PP, sonstwas zugreifen.
Warum das nicht nutzen?
Vorgehen: 1. Einbinden von Excel im VBA-Verweis, dann steht Dir die Intellisense zur Verfügung.
Wenn Du das nicht schaffst, ... falsches Forum?