Transfer Access-Abfrageergebnis nach Excel

Hallo,
ich habe eine Datenbank von Access97 nach Access2007 konvertiert. Im Zuge der DB-Verarbeitung werden u.a. Abfrageergebnisse in einzelne Excel-Dateien (Excel2002) geschrieben. Der dafür vorgesehene Befehl in der Sub lautet:

appAccess.DoCmd.TransferSpreadsheet acExport, 8, sExportTabelle, sExportDatei, True, „“

Um nach der Konvertierung die Dateien unter Excel2007 öffnen zu können, habe ich die Dateiendungen von *.xls auf *.xlsx geändert.

Die Dateien werden zwar von der Sub geschrieben, lassen sich aber nicht mit Excel2007 öffnen (Fehlermeldung: Dateiformat oder Dateierweiterung ungültig).

Es wäre schön, wenn mir jemand (für mich als VBA-Anfänger verständlich) einen Hinweis geben könnte, wie obige Befehlszeile anzupassen ist. Möglichst auch ohne die ganze Sub umbauen zu müssen.

Carsten

Hallo

Sorry, habe leider noch keine Erfahrung mit der 2007er Version.
Christoph

Hallo Carsten,

mit Office 2007 hab ich noch nicht gearbeitet. Deshalb kann ich auch keine konkrete Antwort geben.

Die Anweisung scheint in Ordnung zu sein.

Was man tunlichst vermeiden soll, einfach Dateiendungen zu ändern. Damit änderst du nur den Namen und nicht das interne Format. ich vermute mal Office2007 arbeitet mit einem anderen Format.

Da ich vermute, dass 2007 auch abwärts kompatibel ist die Tabelle normal einlesen und im neuen Format wieder zu speichern.

Normalerweise wird das Format beibehalten, mit dem die Tabelle erzeugt wurde.

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, „Abfragename“, „C:\Zieldateiname.xlsx“, True

Damit sollte der Export klappen.

DoCmd.TransferSpreadsheet acExport,
acSpreadsheetTypeExcel12Xml, „Abfragename“,
„C:\Zieldateiname.xlsx“, True

Damit sollte der Export klappen.

Hallo Kiter,
ich hab die Progarmmzeile wie von dir vorgeschlagen geändert, das Resultat bleibt aber leider dasselbe: Fehlermeldung: Dateiformat oder Dateierweiterung ungültig.
Carsten

Klappt denn ein manueller Export der Abfrage?
(Abfrage markieren, re. Mausklick, Export nach Excel)

Klappt denn ein manueller Export der Abfrage?
(Abfrage markieren, re. Mausklick, Export nach Excel)

Ja,
und auch der automatisierte Export mit der ursprünglichen Befehlszeile, wodurch zumindest eine lesbare Excel2000-Datei geschrieben wird, die ich dann mit Excel2007 weiterverarbeiten kann.

Wenn du noch eine Idee hast, wie ich trotzdem den direkten Export in eine Excel2007-Datei hinbekomme, wäre ich dankbar.

Grüße
Carsten

Hast Du unter Verweise die richtigen Bibliotheken freigeschaltet? [mit der Programmzeile docmd… funktionieren meine Exporte einwandfrei - habe die Zeile aus einem aktuellen VBA rauskopiert]:
Freigeschaltete Bibliotheken (bei mir):
.Visual Basic for Aplications
.Microsoft Access 12.0 Object Library
.OLE Automation
.Microsoft Office 12.0 Access database Engine Object Library

Hallo Carsten,

sorry, da kann ich leider nicht weiterhelfen…
Soweit reichen meine Kenntnisse leider auch nicht.

VG,
Martin

Vielen Dank für den Hinweis mit den Bibliotheken. Bei mir sind jetzt nachstehende Verweise aktiviert:

  • Visual Basic for Aplications
  • Microsoft Access 12.0 Object Library
  • Microsoft Windows Common Controls 6.0 (SP6)
  • OLE Automation
  • Microsoft Visual Basic for Applications Extensibility 5.3
  • Microsoft Excel 12.0 Object Library
  • Microsoft Office 12.0 Access database Engine Object Library

Immerhin hat die erstellte Datei nun auch die gleiche Größe wie die ursprüngliche, aber leider läßt sich sich immer noch nicht öffen.

Was kann ich noch tun?

Ist jetzt zwar ein wenig „stochern im Dunkeln“ aber:
Wenn Du die Ausgabedatei mit neuem Namen versiehst, lässt Sie sich dann öffnen ? z.B. c:\test.xlsx

Vielleicht kannst Du mir mal die VBA-Zeile für den Export in Klarschrift senden.

Guten Morgen Kiter66,

ich habe die Ausgabedatei wie von dir vorgeschlagen in Test.xlsx umbenannt und den Export gestartet.

Beim Öffnen der Datei erscheint jetzt die Meldung: „Von Excel wurde unlesbarer Inhalt in ‚Test.xlsx‘ gefunden. Möchten Sie den Inhalt wiederherstellen?“

Nach dem Öffnen erscheint eine Infobox „Reparaturen“. In der angehängten Logdatei der Reparaturen ist folgendes angegeben:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
  • error036880_04.xmlFehler in Datei ‚C:\Test.xlsx‘
  • Entfernte Datensätze: Benannter Bereich von /xl/workbook.xml-Part (Arbeitsmappe)

Carsten

d.h. du kannst die Tabelle nur im Reparaturmodus ansehen? (Gibt es hier die entsprechenden Inhalte, die vorher in deiner Access-Abfrage sichtbar waren?)
Das ist ein seltenens aber nicht unbekanntes Excel-Problem - ggf. hilft hier ein Excel-Update. ansonsten würde ich mal versuchten, aus der Abfrage eine Tabellenerstellungsabfrage zu machen und dann die Tabelle entsprechend nach Excel zu exportieren.

Anschließend (wenn erfolgreich), die Tabellenerstellungsabfrage in eine Anfügeabfrage umwandeln.

In der Prozedur für den Tabellenexport dann noch folgende Zeilen am Anfang:

currentdb.execute „delete * from tabellenname“
(das löscht den Tabelleninhalt alt)
docmd.openquery „Anfügeabfrage“, acViewNormal
(neubefüllen der Tabelle)
danach können dann die Exportfunktionen ausgeführt werden…

Genau, die Exceldatei wird mit dem Zusatz [Repariert] angezeigt. Die Angaben in der Datei sind soweit i.O.

Ich werde das Problem jetzt mit unserer IT besprechen, die sind immer dankbar für knifflige Fragen :wink:

Den Vorschlag mit der Tabellenerstellungsabfrage werde ich nicht verfolgen, da es noch ca. 20 weitere, zu exportierende Abfragen gibt, die ich dann ebenfalls umwandeln müsste.

Da ich mit Excel2000-Dateien erstmal leben kann, werde ich jetzt abwarten, wass den IT-Kollegen zur Problemlösung noch einfällt.

Dir soweit vielen Dank für deine Unterstützung

Carsten

  • einer fällt mir noch ein: wenn doppelte Spaltennamen vergeben werden kann das Problem mit dem unlesbaren Inhalten auftreten. (z.B. 2 * „Artikelnummer“ in der Abfrage)