Office: Export in Excel per ADO

Helfe beim Thema Export in Excel per ADO in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Excel-Gemeinde, ich möchte gerne meine Daten beim Schließen einer Exceldatei zurück in einen "Container" (Excel-Datei) schreiben. Beim Start... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von drzwockel, 12. Februar 2014.

  1. Export in Excel per ADO


    Hallo Excel-Gemeinde,

    ich möchte gerne meine Daten beim Schließen einer Exceldatei zurück in einen "Container" (Excel-Datei) schreiben. Beim Start werden die entsprechenden Tabellenwerte aus dem zentralen "Container" geholt (Datei ist dabei geschlossen *tongue.gif* ). Dies erfolgt über folgenden Code:

    Code:
    Was muss ich machen, damit ich beim Schließen die Werte wieder zurück in die geschlossene Conatinerdatei bekomme?

    Vielen Dank für Eure Hilfe und Anregungen ...


    Gruß vom Doc

    :)
     
    drzwockel, 12. Februar 2014
    #1
  2. Hallo,

    hat keine eine Idee???




    Gruß vom Doc
     
    drzwockel, 15. Februar 2014
    #2
  3. ... hänge ziemlich auf dem Schlauch ...*smashing
     
    drzwockel, 16. Februar 2014
    #3
  4. Export in Excel per ADO

    Hallo Doc,

    es gibt doch zahlreiche Beispiele, wie man mittels ADODB und Update Exceltabellen ändert. Wo stehst Du denn konkret auf dem Schlauch?

    Grüße
    EarlFred
     
    EarlFred, 16. Februar 2014
    #4
  5. Hallo EarlFred,

    vielen Dank für Deine Nachricht.

    Mein Problem besteht im Ansatz, wie sich die andere Exceldatei (sollte geschlossen bleiben) anspreche und ihr dann den Inhalt rüber schiebe. Mein Gedanke wäre, dass die gesamte Tabelle ausgewechselt - sprich der Inhalt überschrieben wird.

    Ich habe ich zwar ein sehr interessantes Buch (das neue Ecxel VBA - Das Praxisbuch von Held), hier ist aber immer nur das Auslesen beschrieben und das habe ich prima hinbekommen ... nur das Zurückschreiben ... (großes Fragezeichen). Ich gehe aber mal davon aus, dass das überhaupt nicht so ist ...).

    Als Hinweise finde ich in diesem Zusammenhang immer nur Texte zum Schreiben von Excel in Richtung Access ... aber nicht nach Excel ...

    ... oder ich nutze die falsche Suchzusammenstellung in Google :-(

    Gruß vom Doc
     
    drzwockel, 16. Februar 2014
    #5
  6. Hallo Doc,

    offenbar mag Dich Google nicht *frown.gif*

    Zu finden sind z. B. folgende Varianten:
    - das Recordset wird direkt bearbeitet und "upgedatet" (naja...)
    - die Updates passieren direkt mittels SQL-Befehl (performant)

    Ein Beispiel für Variante 1 anbei (XP/Excel 2003/Verweis auf MS ActiveX DataObjects 2.8):
    (dem Datenbänkler kräuseln sich die Zehennägel...)

    Code:
    Der andere, triviale Ansatz: Öffne die Datei und schreib rein....

    Grüße
    EarlFred
     
    EarlFred, 16. Februar 2014
    #6
  7. Hallo EarlFred,

    zunächst einmal Danke, werde den Ansatz gleich mal ausprobieren ... berichte dann nach


    Gruß vom Doc
     
    drzwockel, 16. Februar 2014
    #7
  8. Export in Excel per ADO

    Hallo EarlFred,

    ich bekomme den Ansatz nicht hin ... ich möchte den Inhalt eines ganzen Tabellenblattes per ADO in eine geschlossene Exceldatei auf ein Tabellenblatt kopieren. Es will mir nicht gelingen, das aktuelle Tabellenblatt einzulesen und dann per Befehl in die Zieltabelle zu schaffen ...

    ... so langsam sehe ich hier nur noch ADO-Sternchen ... die mit der Goldkante!


    Gruß vom Doc (völlig verzweifelt).
     
    drzwockel, 17. Februar 2014
    #8
  9. Hallo Doc,

    genau diese Variante fehlt auch in der Liste der Möglichkeiten, vermutlich aus gutem Grund.
    Das, was Du vorhast bedeutet: Erstelle ein Recordset mit einer Verbindung zur aktiven / dieser Mappe (geht), das die enthaltenen Daten woanders hinkopiert - das geht m. W. in Richtung geschlossener Mappen nicht, sondern nur mit der CopyFromRecordset-Methode, die eine m. W. offene Mappe benötigt. Andere Methoden sind mir nicht bekannt (in Bezug auf geschlossene Mappen).
    Ich mag mich irren, es aber auch nicht ausprobieren (keine Zeit).

    Man könnte vielleicht den Weg gehen, ein "leeres Dummy"-Recordset auf die Zielmappe anzusetzen und dann die enthaltenen Daten auf die gewünschten zu ändern, ggw. mittels AddNew neue Datensätze anfügen. Dann bis Du im Prinzip wieder bei meinem vorstehenden Codebeispiel...

    Warum die Datei nicht einfach geöffnet, geändert, gespeichert und wieder geschlossen wird (dauert mit Copy/Paste auch nicht sonderlich lange), erschließt sich mir nach wie vor nicht, dürfte aber die einfachste Variante sein.

    Oder eben das ganze Hin- und Herkopieren vermeiden und direkt mittels SQL-Kommandos die Daten in der Quelle direkt ändern.

    Zu beidem äußerst Du Dich nicht - solltest Du aber tun, damit ich Dich mit diesen Vorschlägen nicht weiter nerve.

    Grüße
    EarlFred
     
    EarlFred, 17. Februar 2014
    #9
  10. Hallo EarlFred,

    vielen Dank für Deine Antwort ... ähnliches habe ich schon befürchtet, aber nicht gehofft, dass es so ist *frown.gif* .

    Ich muss mir also einen anderen Weg suchen ...

    Vielen Dank für Diene Tipps und Deine Mitarbeit.



    Gruß vom Doc
     
    drzwockel, 17. Februar 2014
    #10
  11. Hallo EarlFred,

    durch Zufall bin ich auf deinen Lösungsvorschlag gekommen. Ich bin noch
    relativ neu in VBA und verstehe es nicht ganz.
    Kann mit Hilfe von ADO und SQL-Befehlen eine neuer Datensatz in ein ungeöffnetes Workbook geschrieben werden? Und wenn Ja, wie kann ich die dort letzte Zeile einer Tabelle finden um dort die Datensätze einzufügen?
    Es wäre wirklich klasse, wenn jemand dazu eine Antwort wüßte.

    Grüße,
    Pistolero
     
    Pistolero, 28. Dezember 2015
    #11
  12. Hallo ?,

    ungeöffnet ist immer relativ, in den Speicher wird eine Datei immer geladen, wenn man daran etwas ändert!

    Ein Beispiel um einen neuen Datensatz anzufügen.

    ' **********************************************************************
    ' Modul: Modul1 Typ: Allgemeines Modul
    ' **********************************************************************

    Option Explicit

    Sub updateADO()
    Dim objADO As Object
    Dim strFile As String, strTable As String, strRange As String
    Dim strSQL As String, strCon As String

    strFile = "E:\Forum\ado_test.xlsx" 'DateiPfad und name - Anpassen!
    strTable = "Tabelle1" 'Tabellenname - Anpassen
    strRange = "A1:D10000" 'Bereich - Anpassen!

    strSQL = "SELECT * FROM [" & strTable & "$" & strRange & "]"

    If Right(strFile, 3) = "xls" Then
    strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Extended Properties=Excel 8.0;" & "Data Source=" & strFile & ";"
    ElseIf Right(strFile, 4) = "xlsx" Or Right(strFile, 4) = "xlsm" Then
    strCon = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Extended Properties=""Excel 12.0;HDR=YES"";" & "Data Source=" & strFile & ";"
    End If

    Set objADO = CreateObject("ADODB.Recordset")

    objADO.Open strSQL, strCon, 3, 3

    With objADO
    'erstes Array = Feldnamen (Überschriften) zweites Array = Werte
    .AddNew Array("Datum", "Wert 1", "Wert 2", "Text"), Array("31.12.2015", 50, 100, "Neuer Eintrag")
    .Update
    .Close
    End With

    Set objADO = Nothing
    End Sub


    Gruß Sepp
     
  13. Export in Excel per ADO

    Hallo Sepp,

    vielen Dank für deine super-schnelle Antwort.
    Das sieht ja mal richtig vielversprechend aus. So wie ich das verstehe, werden zwei neue Datensätze in die "Tabelle1" geschrieben:
    Die erste Zeile mit den Spalten-Überschriften und dann eine weitere Zeile mit den Werten.

    Interessanterweise muss das Array nicht zuvor definiert werden.

    Ich hoffe, dass ich nicht auf den Schlauch stehe.
    Für mich sieht es so aus, als wenn die "Tabelle1" zuvor leer gewesen wäre und sie jetzt insgesamt zwei Datensätze hätte.

    Wie würde es aussehen falls die "Tabelle1" schon Datensätze enthalten würde und man einen weiteren Datensatz einfügen wollte?

    Vielen Dank schon mal im vorraus für die sicherlich spannende Antwort.

    Viele Grüße,
    Franz
     
    Pistolero, 28. Dezember 2015
    #13
  14. Hallo Franz,

    falsch verstanden!

    Die Tabelle, zumindest die Überschriften müssen schon bestehen, dann wird ein neuer Datensatz hinzugefügt.

    Gruß Sepp
     
  15. Hallo Sepp,

    vielen Dank für deine Hilfe. ich habe doch geahnt, dass ich auf den Schlauch stehe. *Smilie

    Jetzt habe ich deinen Code in meinem Programm eingebaut und bekomme
    folgenden Fehler:

    "Laufzeitfehler '-2147217865 (80040e37)
    Das Microsoft Accessdatenbankmodul konnte das Objekt Tabelle1$A1:E10000 nicht finden."

    [ich habe den Range nur im Fehlertext verändert (das D durch ein E ersetzt) , damit kein Smily erscheint.] *biggrin.gif*

    Eine Excel-Datei mit der "Tabelle1" und den Spaltenüberschriften ("Datum", "Wert 1", "Wert 2", "Text") habe ich zuvor angelegt.


    Wie gesagt, soll sich der Datentransfer zwischen zwei Excel-Tabellen abspielen.

    In deinem Code steht: objADO.Open strSQL, strCon, 3, 3

    Was bedeuten denn die zwei "3"?

    Sepp, ich denke mal, du weißt schon wo der Fehler steckt, oder?

    Viele Grüße und vielen Dank noch mal,
    Franzel
     
    Pistolero, 28. Dezember 2015
    #15
Thema:

Export in Excel per ADO

Die Seite wird geladen...
  1. Export in Excel per ADO - Similar Threads - Export Excel ADO

  2. Export an Excel aus Registersteuerelement UFO

    in Microsoft Access Hilfe
    Export an Excel aus Registersteuerelement UFO: Hallo zusammen! Hab mir aus dem Forum nachfolgenden Code geholt, welcher super für den Export funktioniert. Die Zuweisung des zu exportierenden UFO's erfolgt über frmX. Nun würde ich gerne dieses...
  3. Formatierung Excel mit Kontrollkästchen Export zu PDF

    in Microsoft Excel Hilfe
    Formatierung Excel mit Kontrollkästchen Export zu PDF: Hallo, Ich habe eine Exceldatei, die Checkboxen/Kontrollkästchen beinhaltet. Beim Export zum PDF sind die Kästchen nur ganz klein dargestellt/verzerrt oder die Häkchen sind sehr dezent, sodass...
  4. Excel-Export aus Backend mit Datenbankpasswort

    in Microsoft Access Hilfe
    Excel-Export aus Backend mit Datenbankpasswort: Hallo Ich bin selber kein ACCESS-Entwickler und benötige Hilfe bei einer Aufgabenstellung.: Hier eine knappe Beschreibung: Eine Windows-Anwendung nutzt eine MS-Access-DB als backend. Die DB kann...
  5. Export Excel in csv per VBA

    in Microsoft Excel Hilfe
    Export Excel in csv per VBA: Hallo Zusammen, ich benötige für ein kleines Projekt einen CSV-Export aus einer Exceldatei, welcher eine Matrix-Tabelle in eine CSV-Datei ausgibt. Für jede verfügbare Matrix soll eine separate...
  6. Excel Makro - Export zweier Tabellenblätter in separate Datei

    in Microsoft Excel Hilfe
    Excel Makro - Export zweier Tabellenblätter in separate Datei: Hallo in die Runde, ich stehe gerade vor einem Problem, das sicher am einfachsten über ein Makro gelöst werden kann – deren Benutzung ich allerdings nicht wirklich mächtig bin. Eine erste...
  7. Kontaktliste aus Outlook als pdf/Excel exportieren

    in Microsoft Outlook Hilfe
    Kontaktliste aus Outlook als pdf/Excel exportieren: Hallo zusammen :) ich habe meine Kontakte kürzlich alle in Outlook zusammengetragen und in verschiedenen Ordnern für die einzelnen Projekte abgelegt. Nun möchte ich aus einem Ordner eine...
  8. Makro für csv-Export

    in Microsoft Excel Hilfe
    Makro für csv-Export: Guten Tag! Es wäre sehr toll, wenn mir jemand helfen könnte. Der folgende Code macht, was ich bisher wollte: Sub csv_Makro() Dim SrcRg As Range Dim CurrRow As Range Dim CurrCell As Range...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden