Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Access Export in Excel

Begonnen von itaflo, Februar 28, 2019, 07:12:49

⏪ vorheriges - nächstes ⏩

itaflo

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ß

ebs17

Natürlich.
Du kannst bspw. nach dem Stichwort CopyFromRecordset recherchieren.
Mit freundlichem Glück Auf!

Eberhard

itaflo

Hilft mir leider nicht weiter weil man hier nur immer wieder eine Excel liste öffnet
und nicht eine bestimmte Excel Datei füttert.

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard

itaflo

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.

redithebat

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

datekk

#6
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

Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

Milvus

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

itaflo

per OLE hab ich das noch nie versucht

ehrlich gesagt hab ich auch keine Ahnung wie das gehen soll :(

ebs17

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
Mit freundlichem Glück Auf!

Eberhard

itaflo

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.

Lachtaube

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.
Grüße von der (⌒▽⌒)

Milvus

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?