Office: Export - Tabellenblatt löschen

Helfe beim Thema Export - Tabellenblatt löschen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich möchte von Access zu Excel exportieren. Leider überschreibt er mir die Daten nicht. Stattdessen kommt die Fehlermeldung 3435 "Zellen in... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Eierhals, 29. August 2011.

  1. Eierhals Erfahrener User

    Export - Tabellenblatt löschen


    Hallo,

    ich möchte von Access zu Excel exportieren. Leider überschreibt er mir die Daten nicht. Stattdessen kommt die Fehlermeldung 3435 "Zellen in Tabelle können nicht gelöscht werden".
    Gibt es einen Weg, aus Access heraus Tabellenblätter zu löschen bzw. eine andere Möglichkeit, dass der Export funktioniert und die alten Daten mit den neuen überschreiben werden?

    Danke für eure Mithilfe.
    MfG
    Florian
     
    Eierhals, 29. August 2011
    #1
  2. miriki Erfahrener User
    Wie genau wird der Export denn erledigt? Ich denke, da wird, ggf. hinter einem Button versteckt, eine kleine VBA-Routine laufen, oder? Dann kann man da bestimmt irgendwie was einbauen, um das Blatt vorher zu löschen.

    Gruß, Michael
     
  3. Eierhals Erfahrener User
    Den Export mache ich über den Makro "Transferarbeitsblatt". Dann wird mit dem Makro "AusführenAnwendung" die Excel Mappe geöffnet, in welcher dann ein Makro durchläuft, der das Tabellenblatt löscht.
    On Error Resume Next
    Application.DisplayAlerts = False
    Sheets("aufwand_salden").Delete
    Application.DisplayAlerts = True


    Läuft alles, aber natürlich sehr langsam. Ich bin nicht sonderlich fit was VBA betrifft. Deswegen wüsste ich nicht, wie eine kleine "VBA-Routine" laufen könnte.

    MfG
    Florian
     
    Eierhals, 6. September 2011
    #3
  4. miriki Erfahrener User

    Export - Tabellenblatt löschen

    Ähm... In der Reihenfolge? Was bringt Dir dann der Export, wenn Du ihn direkt danach wieder löscht?

    Das Löschen geht übrigens schief, wenn versucht wird, das letzte / einzige Blatt in der Mappe zu löschen... (was Du dann wegen "On Error..." nicht mitbekommen würdest.)

    Was ich mir vorstellen könnte:
    - Access erstellt ein Excel-Objekt (1), mit dem die "alte" Version der Daten geöffnet wird.
    - Dann wird das "alte" Blatt gelöscht. (2)
    - Die Mappe wird wieder abgespeichert.
    - Die neuen" Daten werden von Access in die Mappe exportiert.
    - Die aktualisierte Mappe wird mit Excel geöffnet. (3)

    (1) Das hat den Vorteil, daß man Excel quasi "fernsteuern" kann und nicht auf Autostart-Makros in der Mappe angewiesen ist.
    (2) im Detail würde ich wohl:
    - Umbenennen des Datenblatts in "tmp"
    - Einfügen eines neuen, leeren Blatts
    - neues Blatt in "aufwand_salden" umbenennen
    - Blatt "tmp" löschen
    (3) Hier nicht über ein Excel-Objekt, sondern z.B. per ShellExecute.

    Ist jetzt nicht bis ins Details durchdacht, aber wenn nichts dazwischen kommt, müßte das ein gangbarer Weg sein.

    Gruß, Michael
     
  5. Eierhals Erfahrener User
    Ich habe mich falsch ausgedrückt. Natürlich wird das alte Tabellenblatt erst gelöscht bevor der Export statt findet.
    Genau so läuft es im Moment. Aber der Schritt (2) störrt mich.
    Aber es ist OK. Danke. Wie funktioniert ShellExecute? Dann könnte ich doch auf den AusführenAnwendung Makro verzichten? Der ist nämlich nicht Access 2007 kompatiebel und muss, wenn möglich, auch verschwinden.

    MfG
    Florian
     
    Eierhals, 7. September 2011
    #5
  6. miriki Erfahrener User
    Während (1) noch mit "Bordmitteln" innerhalb des VBA im Access erledigt werden kann (CreateObject), muß für (3) eine API-Funktion deklariert werden.

    Ich kann Dir sagen, wie es unter Windows XP mit Office 2000 funktioniert. Ob das aber unter Windows 7 auch noch funktioniert, weiß ich nicht 100%ig. Solange es 32-bittig bleibt, müßte es aber theoretisch...

    Ich schau mir das mal genauer an und meld mich dann wieder...

    Gruß, Michael
     
  7. miriki Erfahrener User
    Nun bin ich über eine Kleinigkeit gestolpert...

    Es bringt gar nichts, in Excel ein leeres Blatt für den Export aus Access bereitzustellen, da Access beim Export sowieso ein neues Blatt anlegt.

    Von daher ist die Vorgehensweise etwas anders...

    Das bestehende Daten-Blatt muß in der Excel-Mappe gelöscht werden, es darf aber kein neues mit dem Namen angelegt werden.

    Der Name ist quasi von Access vorgegeben, denn der lautet so, wie die exportierte Tabelle / Abfrage.

    Wenn einem das nicht gefällt, müßte man also nach dem Export nochmals in der Excel-Mappe herumdoktorn, um den Export-Blattnamen in den gewünschten umzubenennen.

    Ich hab da mal was zusammengebastelt, will das aber noch kurz etwas überarbeiten...

    Gruß, Michael
     
  8. Eierhals Erfahrener User

    Export - Tabellenblatt löschen

    Ach so stimmt, dieses hätte ich dir auch sagen können, wenn ich daran gedacht hätte.
    Im Moment wird 1.das Blatt gelöscht, 2.die Daten exportiert und 3. aktualisiert - ein Kreislauf.
    Ich würde den Schritt mit dem "Löschen" übergehen und einfach überschreiben.
    Das ist aber nicht möglich, habe ich mir sagen lassen, weil das Tabellenblatt mit Formeln und Makros bei der Aktualisierung "aufgehübscht" wird. Somit entspricht es nicht mehr dem ursprünglichen und eine Überschreibung funktioniert nicht mehr. Deswegen der ganze HickHack mit dem "löschen".
    Vielen Dank schon einmal für die Mühe die du dir machst.
    MfG
    Florian
     
    Eierhals, 7. September 2011
    #8
  9. miriki Erfahrener User
    Ich weiß ja nun nicht genau, was denn noch das Excel-Makro macht, um das Tabellenblatt aufzubereiten. Aber von Access-Seite aus könnte es so wie im Anhang funktionieren.

    Ich hab da eine Tabelle, darauf eine Abfrage und dazu passend ein Formular gebaut. Das Formular ist ein Endlos-Formular mit dem (einzigen) Datenfeld der Abfrage. Der eine Button schließt das Formular, der andere macht den Export in Richtung Excel.

    Was im Source dahinter passiert:
    Code:
        ' ==================================================
        ' (1)
        ' Blatt "datensatz" aus Mappe "datensatz.xls" löschen
        ' ==================================================
    
        ' Excel als COM-Objekt erstellen und anzeigen
        Set oExcel = CreateObject("Excel.Application")
        oExcel.Visible = True
        ' Mappe laden
        oExcel.workbooks.Open ExcelLaufwerk & ExcelPfad & ExcelDatei
        ' ggf. Temp-Blatt löschen
        On Error Resume Next: oExcel.worksheets(ExcelTmpBlatt).Delete: On Error GoTo 0
        ' Daten-Blatt in Temp-Blatt umbenennen
        On Error Resume Next: oExcel.worksheets(ExcelDatenBlatt).Name = ExcelTmpBlatt: On Error GoTo 0
        oExcel.displayalerts = False: On Error Resume Next: oExcel.worksheets(ExcelTmpBlatt).Delete: On Error GoTo 0: oExcel.displayalerts = True
        ' Mappe schließen und dabei speichern
        oExcel.workbooks(ExcelDatei).Close savechanges:=True
        ' Excel beenden und Objekt freigeben
        oExcel.Quit
        Set oExcel = Nothing
    Hier wird, zugegeben etwas aufwändig, dafür aber sicher, das Blatt "datensatz" aus der Mappe "datensatz.xls" gelöscht. Genau genommen wird es zunächst nur umbenannt. Sollte das Löschen dann nämlich nicht gehen (z.B. einziges Blatt in der Mappe), dann ist zumindest der Blattname kein Konflickt mehr.

    Ich hab dazu mal eine fast leere Mappe mit nur dem Blatt "xxx" dazugepackt. Wenn Du die in C:\ ablegst oder im Access-VBA die Konstanten anpaßt...

    Code:
        ' ==================================================
        ' (2)
        ' Abfrage "qry_datensatz" in "datensatz.xls" exportieren
        ' ==================================================
    
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, AccessAbfrage, ExcelLaufwerk & ExcelPfad & ExcelDatei
    Das hier ist dann der eigentliche Export. Danach ist wieder ein Blatt "qry_datensatz" in der Mappe.

    Code:
        ' ==================================================
        ' (2a)
        ' Nacharbeit: Export-Blatt in Daten-Blatt umbenennen
        ' ==================================================
    
        ' Excel als COM-Objekt erstellen und anzeigen
        Set oExcel = CreateObject("Excel.Application")
        oExcel.Visible = True
        ' Mappe laden
        oExcel.workbooks.Open ExcelLaufwerk & ExcelPfad & ExcelDatei
        ' Temp-Blatt löschen
        oExcel.displayalerts = False: On Error Resume Next: oExcel.worksheets(ExcelTmpBlatt).Delete: On Error GoTo 0: oExcel.displayalerts = True
        ' Export-Blatt in Daten-Blatt umbenennen
        oExcel.worksheets(AccessAbfrage).Name = ExcelDatenBlatt
        ' Mappe schließen und dabei speichern
        oExcel.workbooks(ExcelDatei).Close savechanges:=True
        ' Excel beenden und Objekt freigeben
        oExcel.Quit
        Set oExcel = Nothing
    Die Nachbereitung sorgt dann dafür, daß das "tmp"-Blatt spätestens hier weg ist und das "qry_datensatz"-Blatt dann in den gewünschten Namen "datensatz" umbenannt wird. Diese ganze Namensgebung ist übrigens weiter oben im Source in Konstanten hinterlegt.

    Code:
        ' ==================================================
        ' (3)
        ' Datei "datensatz.xls" mit Excel öffnen
        ' ==================================================
    
        LaunchDocument ExcelLaufwerk & ExcelPfad & ExcelDatei
    Zu guter Letzt wird dann die aktualisierte Excel-Mappe dann über die Shell-Verknüpfung in Excel geöffnet. Die Routine basiert dann auf einer Windows-API-Routine, die weiter oben deklariert ist.

    Probier mal aus, ob und wie Du das Ding gebrauchen / adaptieren kanst...

    Gruß, Michael
     
  10. Eierhals Erfahrener User
    Entschuldige meinen saloppen Ton: Alter Falter ganz GROß!

    Ich habe nur mal kurz rübergeschaut und die Pfade angepasst, aber der erste Eindruck ist hervorragend. Ich hoffe ich bekomme es für meine Zwecke angepasst.

    Vielen Dank für die Mühe, die du dir gemacht hast! Ich melde mich nochmal, wenn es für meine Bedürfnisse läuft.
     
Thema:

Export - Tabellenblatt löschen

Die Seite wird geladen...
  1. Export - Tabellenblatt löschen - Similar Threads - Export Tabellenblatt löschen

  2. Makros für csv-Export mit Anführungszeichen für ausgewählte Splaten

    in Microsoft Excel Hilfe
    Makros für csv-Export mit Anführungszeichen für ausgewählte Splaten: Hallo liebe Forengemeinde, ich habe folgendes Problem: Ich muss eine csv-Datei bearbeiten und anschließend wieder als csv-Datei speichern. In der Originaldatei sind einige Spalteninhalte in in...
  3. Export-Makro überschreibt .xlsx-Dateien nur taggleich

    in Microsoft Access Hilfe
    Export-Makro überschreibt .xlsx-Dateien nur taggleich: Hallo zusammen, arbeite bereits seit vielen Jahren mit Access-Datenbanken. Seit einigen Wochen habe ich einen Fehler der mich in den Wahnsinn treibt. Wir verwenden Access-Datenbanken als...
  4. Export als Textdatei in UTF-8

    in Microsoft Excel Hilfe
    Export als Textdatei in UTF-8: Hallo zusammen, ich habe gerade ein Exportproblem und wäre für jede Hilfe dankbar. In unserem CAD Programm habe ich das Wörterbuch exportiert als .txt-Datei. Das Textprogramm gibt eine in UTF-8...
  5. Export CSV - Laufzeitfehler 3625

    in Microsoft Access Hilfe
    Export CSV - Laufzeitfehler 3625: Moin Zusammen Ich steh gerade ein wenig auf dem Schlauch... Habe eine Tabelle die ich exportieren will. Habe es einmal gemacht und den Exportschritt unter "exportDatev" gespeichert. Über VBA...
  6. Export in bestehendes Tabellenblatt

    in Microsoft Access Hilfe
    Export in bestehendes Tabellenblatt: Hallo, ich versuche in ein bestehendes Excel-Worksheet/Tabellenblatt eine Abfrage von Access zu exportieren. Der Export funktioniert mit: Code: DoCmd.TransferSpreadsheet acExport,...
  7. Export aus Access nach Excel in mehreren tabellenblättern

    in Microsoft Access Hilfe
    Export aus Access nach Excel in mehreren tabellenblättern: Hallo zusammen, ich bräuchte eure hilfe und wäre dankbar über einen hinweis. mein problem ist, dass ich automatisierten export von access nach excel vornehmen möchte.ich habe eine abfrage die...
  8. 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...
  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