wydy
Goto Top

Exceltabelle in Access importieren

Exceltabelle in Access importieren klappt nur teilweise

Moin Leute,
ich habe ein Funktion erstellt, mit welcher ich alle Daten aus einer Exceltabelle in eine neue Accesstabelle importiere. Der Import funktioniert auch. Es wird mir jedoch jedesmal eine Fehlertabelle erstellt mit dem Name Gesamt$_Importfehler und in dieser Tabelle steht dann:
Fehler Feld Zeile
Fehler bei Typumwandlung F2 123
Fehler bei Typumwandlung F2 124
Fehler bei Typumwandlung F2 125
Fehler bei Typumwandlung F2 126
Fehler bei Typumwandlung F2 127
Fehler bei Typumwandlung F2 128
Fehler bei Typumwandlung F2 129
...
In der importierten Tabelle wird die Spalte F2 jedesmal als Typ Datum/Uhrzeit angegeben, obwohl dort kein einziges Datum eingetragen ist. Deshalb wird ja dann auch die Tabelle Gesamt$_Importfehler erstellt. Wie kann ich den Fehler beheben? Die Spalte F2 ist zwar unwichtig, jedoch soll es nicht jedesmal eine neue Fehlertabelle erstellen. Beim nächsten aufruf wird ja dann die Tabelle Gesamt$_1Importfehler erstellt...
Hier noch der Quellcode
Public Sub updatePlannung()
    Dim db As Database

    Set db = CurrentDb
    CurrentDb.Execute "DROP TABLE tbl_importPlannung"  
    'Set db = Nothing  
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "tbl_importPlannung", "Plannung.xls", True, strRangeToImport  
End Sub
Existiert die Tabelle tbl_importPlannung nicht, kommt eine Fehlermeldung, ist mir klar. Ich werde auch später kontrollieren ob die Tabelle vorhanden ist, bevor ich sie lösche. Aber ein Schritt nach dem anderen face-smile

Content-Key: 123419

Url: https://administrator.de/contentid/123419

Printed on: April 25, 2024 at 16:04 o'clock

Member: Biber
Biber Aug 26, 2009 at 07:16:10 (UTC)
Goto Top
Moin wydy,

In der importierten Tabelle wird die Spalte F2 jedesmal als Typ Datum/Uhrzeit angegeben, obwohl dort kein einziges Datum eingetragen ist.
Die Spalte F2 ist zwar unwichtig,

Da hätte ich aber noch ein oder zwei Rückfragen...

  • wiesó Spalte "F2"? Hat Deine tabelle doch keine Header= oder heißt die Spalte in der Importdatei wirklich "F2"?
  • was bedeutet "obwohl dort kein einziges Datum eingetragen ist"? Was ist denn eingetragen?
  • Wie ist denn die Spalte, die als "F2" ankommt, in Excel formatiert
  • Wenn gilt "Die Spalte F2 ist zwar unwichtig", warum übernimmst Du die denn überhaupt?
  • und letztendlich: Ist strRangeToImport denn undefiniert oder kommt da durh unsaubere Programmierung irgendwowo anders der Wert her (wenn ja: was)?
  • Haben Dein "Excel" und Dein "Access" denn auch einen Nachnamen bzw. eine Versionsnummer und falls Du unter XP agierst mit welchem SP?

Grüße
Biber
Member: wydy
wydy Aug 26, 2009 at 08:02:42 (UTC)
Goto Top
Die Exceltabelle wurde leider nicht von mir erstellt. Die wurde in einem anderen Bereich erstellt und ich brauche einige Daten aus dieser Exceltabelle für meine Arbeit. Ich kann also an der Exceltabelle gar nichts verändern und da liegt leider auch das Problem.

Die Exceltabelle hat keinen Header und Access benennt deshalb die Spalten mit F1, F2.... Fx. Ich habe dies auch bereits in der Importfunktion geändert.
acSpreadsheetTypeExcel9, "tbl_importPlannung", "Plannung.xls", False, strRangeToImport  
In der Spalte ist eine Formel eingetragen, mit welcher kontrolliert wird ob das aktuelle Datum ein Feiertag ist oder nicht. Ist es kein Feiertag bleibt die Spalte leer, ist es ein Feiertag wird dieser dort eingetragen. Hier die Funktion in Excel: =WENN(ISTFEHLER(SVERWEIS(A14;Feiertage!$A$4:$C$54;1;FALSCH));"";SVERWEIS(A14;Feiertage!$A$4:$D$54;4;FALSCH))
Die Spalte ist in der Exceltabelle als Kategorie Standart markiert, falls du das meinst. Also Kontextmenu -> Zellen formatieren -> Zahlen -> Standart
Ich habe versucht die Spalte F2 nicht zu übernehmen und habe in der Funktion den Teil mit strRangeToImport geändert in A1:AF255;C1:AF255. Jedoch wurde die Eingabe so nicht akzeptiert. Ich konnte nur einen Bereich zum importieren angeben und nicht 2.
strRangeToImport ist undefiniert. Ich habe die Funktion "gegoogelt" und da hiess es, wenn alle Daten importiert werden sollen, werde dort eben strRangeToImport eingefügt.
Member: Biber
Biber Aug 26, 2009 at 09:31:49 (UTC)
Goto Top
Moin wydy,

geändert in A1:AF255;C1:AF255. Jedoch wurde die Eingabe so nicht akzeptiert.
Wenn es Dich tröstet: Selbst die "richtige" Angabe A1:B255;C1:AF255 wäre abgelehnt worden.
Der Bereich muss (jedenfalls nach meinen Test) zusammenhängend sein.

Dennoch muss ja diese Information "Spalte F2 ist vom Typ Datum/Uhrzeit" irgendwo herkommen.
Wenn ich Dein Szenario nachstelle und eine Spalte mit per "=Wenn(Bedingung,""; andererWert)" füllen lasse, dann kommt diese Spalte bei Access als TEXT an.
Es sei denn, dummerweise sind ausgerechnet in den ersten 8 Zeilen mindestens 4 Werte, die ungleich "" (Leerstring) sind UND als Datum interpretiert werden.

Das kann aber nur sein, wenn die per SVerweis kopierten Felder
  • entweder im Sheet "Feiertage" als Datum formatiert sind
  • oder dort nicht, wie ich vermutet hätte, der Text "Tag der Arbeit" steht, sondern "1.Mai". Was wiederum Excel darum bringt, diesen String wieder als Datum aufzufassen.

--> Anyhow, die Ursache ist eigentlich nur sinnvoll in der Quell-Exceldatei abzustellen.
Ich würde mich mit den Kaspern Kollegen zusammensetzen und um etwas mehr Sorgfalt bzw. Datenstriktheit bitten.

Denn Du kannst diese Import-Unsauberkeiten nur mit Mehraufwand ausräumen.

Grüße
Biber