Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Überlauf beim Import von Excel Tabelle
zurück: Zusammenfügen von mehreren xls Tabellen weiter: Abfrage: Kategorien einer Spalte in einzelnen Spalten summ. Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
anschuh
Im Profil kannst Du frei den Rang ändern


Verfasst am:
02. Jun 2006, 09:51
Rufname:

Überlauf beim Import von Excel Tabelle - Überlauf beim Import von Excel Tabelle

Nach oben
       

Hallo,

ich bin bei Access auf ein etwas seltsames Problem gestoßen und weis leider (auch nach intensiver Google und Foren Suche) nicht weiter.
Also ich möchte folgendes machen:
Ich habe eine Liste mit Adressen und noch weiteren Angaben wie Größe (Zahl), Gruppe (Text) und Wiedervorlage (Datum) in einer Exceltabelle. Diese importiere ich über das Makro Transfer Arbeitsblatt in eine Tabelle in Access. Jetzt passiert folgendes:
Manchmal läuft das Makro absolut fehlerfrei, d.h. alle Zeilen aus der Exceltabelle werden schön importiert. Manchmal bekomme ich den Fehler "Überlauf bei numerischem Feld".
Ich gehe dann immer so vor, dass ich die Daten häppchenweise importiere, also einen Teil abschneide, zwischenspeichere (anderes Excelfile) und dann nach und nach über mein, mit dem Makro verknüpftes, Excelfile importiere (schon importierte Zeilen löschen, den Rest anfügen und dann auf gut Glück importieren und im Zweifel wieder welche abschneiden usw.).
Das seltsame ist, dass das Makro manchmal bei 10, 20 oder auch bei 200 Zeilen funktioniert. Es ist irgendwie Glückssache und auf Dauer echt nervig.
Ich dachte erst, dass es an den Daten liegt, aber ich bekomme am Ende immer alle Daten importiert, also sollten die Daten i.O. sein.
Hat jemand eine Idee woran das liegen könnte?

Vielen Dank
Andrea
steffen0815
VBA-Programmierer


Verfasst am:
02. Jun 2006, 12:42
Rufname:


AW: Überlauf beim Import von Excel Tabelle - AW: Überlauf beim Import von Excel Tabelle

Nach oben
       

Hallo Andrea,
hatten wir die Makrogeschichte nicht schon hinter und gelassen und uns auf VBA geeinigt Wink .
Das letzte Mal kamst du mit Pseudocode C# bzw. Java daher und jetzt gehst du wieder ins Programmiermuseum ? Laughing
Sei's drum.
Du solltest sicher erst mal die problematische Datei manuell importieren, ich denk mal dort ist die Fehlerbehandlung besser.

Ansonsten hilft hier vielleicht erst mal die Exceltabelle zu verknüpfen, dann solltest du sehen, an welcher Stelle das Problem auftritt.
Weiter helfen könnte auch ACC: "#Zahl!" erscheint in eingebunden Excel Arbeitsblättern

Letztendlich kannst du nur die Datei mal hier zeigen (oder schicken). Ich denke ohne die Daten zu sehen, wird das nix.

_________________
Gruß Steffen
anschuh
Im Profil kannst Du frei den Rang ändern


Verfasst am:
02. Jun 2006, 17:42
Rufname:

AW: Überlauf beim Import von Excel Tabelle - AW: Überlauf beim Import von Excel Tabelle

Nach oben
       

Hallo Steffen,

Zitat:
erst mal die Exceltabelle zu verknüpfen

Hatte ich ja am Anfang auch so. Leider hat mir dann ein Excel-Access Problemchen Ärger gemacht (ACC: "#Zahl!" erscheint in eingebunden Excel Arbeitsblättern) und deshalb musste ich darauf umsteigen die Daten zuerst in eine Tabelle zu importieren und dann erst mit Deiner Abfrage anzufügen. Leider hat beim Verknüpfen Access meine Spalte mit Postleitzahlen immer als Zahl interpretiert genau wie Telefonnummern ohne Vorwahl und mir damit regelmäßig einen Typkonflikt erzeugt.
An sich funtkioniert das mit dem Importieren auch prima. Ich importiere, lese alles in die Haupttabelle ein und lösche dann sämtliche Inhalte aus der Importtabelle. Wenn da nur der komische Fehler nicht wäre.
Habe übrigens ein interessantes Phänomen bei meinem aktuellen Makroproblem entdeckt:
Wenn ich einfach am Ende meiner Zeilen einen Teil ausschneide und in ein anderes Excelfile einfüge (auch wenn es leere Zeilen sind) und die Zeilen dann aber markiert lasse, dann funktioniert es. Sehr strange.
Ne Idee, was da nicht stimmt?

Viele Grüße
Andrea
steffen0815
VBA-Programmierer


Verfasst am:
02. Jun 2006, 19:21
Rufname:

AW: Überlauf beim Import von Excel Tabelle - AW: Überlauf beim Import von Excel Tabelle

Nach oben
       

Hallo,
Zitat:
Leider hat mir dann ein Excel-Access Problemchen Ärger gemacht
Vielleicht ist es jetzt das gleiche Problem - nur getarnt.
Microsoft hat folgendes geschrieben:
ANMERKUNG: Wenn Sie das Excel Tabellenblatt importieren anstatt es zu verknüpfen, wird der Datentyp "Text" durch den Importalgorithmus bevorzugt behandelt. Wenn in einer Stichprobe der numerische Datentyp überwiegt, aber dennoch zumindest ein Textwert für das Feld enthalten ist, dann importiert Microsoft Access das gesamte Feld als Text.
Denn wo MS die Stichprobe nimmt - ich weiß es nicht

Also aus der Ferne kann ich da nichts sagen.

Ansonsten gilt das oben gesagte:
- manuell durchführen
- keine Makros sondern VBA
- das im Link beschriebene beachten
Microsoft hat folgendes geschrieben:
Microsoft Access legt den Datentyp bei der Verknüpfung für jedes Feld auf der Grundlage der Daten in den ersten acht Zeilen fest.
Denkbar wäre z.B. 8 Dummyzeilen (automatisch) einzufügen bzw. das im Link vorgeschlagene
Microsoft hat folgendes geschrieben:
1. Öffnen Sie das Tabellenblatt in Microsoft Excel 7.0 oder 97.
2. Formatieren Sie die Zellen im Tabellenblatt, die vermischte Daten enthalten als "Text". Sie können dies über das Menü FORMAT in Microsoft Excel einstellen.
3. Erzeugen Sie ein Makro in Microsoft Excel mit der folgenden Prozedur:

Sub Addspace()
For Each cell in Selection
cell.value = " " & cell.Value
cell.value = Right(cell.Value, Len(cell.Value) - 1)
Next
End sub

4. Markieren Sie die Zellen im Tabellenblatt, die vermischte Daten enthalten.
5. Führen Sie das Makro aus und speichern das Tabellenblatt.
6. Öffnen Sie Ihre Datenbank in Microsoft Access.
7. Erstellen Sie eine Tabellenverknüpfung zu dem Tabellenblatt, das Sie unter Microsoft Excel erstellt haben. Ihre Daten werden nun im richtigen Format angezeigt.

_________________
Gruß Steffen
Nouba
nicht ganz unwissend :)


Verfasst am:
02. Jun 2006, 20:01
Rufname:
Wohnort: Berlin


AW: Überlauf beim Import von Excel Tabelle - AW: Überlauf beim Import von Excel Tabelle

Nach oben
       

Hallo,

die Informationen für die Stichproben liegen in der Registrierdatenbank vor.
Code:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel]
"win32"="C:\\Programme\\Microsoft Office\\OFFICE11\\msaexp30.dll"
"DisabledExtensions"="!xls"
"ImportMixedTypes"="Text"
"FirstRowHasNames"=hex:01
"AppendBlankRows"=dword:00000001
"TypeGuessRows"=dword:00000019
"win32old"="C:\\WINDOWS\\system32\\msexcl40.dll"

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
steffen0815
VBA-Programmierer


Verfasst am:
02. Jun 2006, 20:27
Rufname:

AW: Überlauf beim Import von Excel Tabelle - AW: Überlauf beim Import von Excel Tabelle

Nach oben
       

@nouba,
was du nicht alles weißt Embarassed . Werd mich bei Gelegenheit mal damit beschäftigen.

@andrea:
folgender Code setzt den Vorschlag von MS um.
Wird eine Anfügeabfrage genutzt, kann man vermutlich (hab noch nicht richtig darüber nachgedacht) immer die Exceldatei als Text formatieren.
Code:
Option Compare Database
Option Explicit

Sub BeispielImportierenUndLinken()
' Testweiser Import und Verknüpfung mit einer Exceldatei
' erstes Tabellenblatt einer Kopie der Exceldatei wird auf Text formatiert
' http://support.microsoft.com/default.aspx?scid=kb;de;208414
   
    Const ImportDatNam = "C:\tar\mytest.xls"   ' umzuwandende Exceldatei
    Const TmpImportDatNam = _
                      "C:\temp\importtemp.xls" ' (Temporär) erzeugte Exceldatei
    Const TmpLinkDatNam = _
                      "C:\temp\linktemp.xls"   ' (Temporär) erzeugte Exceldatei
    Const ACImportTabName = "ACImportTab"      ' Name der importierten Accesstabelle
    Const ACLinkTabName = "ACLinkTab"          ' Name der verlinkten Accesstabelle
    Const ExcelTabName = "Tabelle3"            ' Exceltabellenblatt
   
    ' -------------------
    ' 0) evtl. Löschen der schon vorhandenen (alten) Acesstabelle
    On Error Resume Next
    DoCmd.DeleteObject acTable, ACImportTabName
    DoCmd.DeleteObject acTable, ACLinkTabName
    On Error GoTo 0
    ' -------------------
   
    ' -------------------
    ' 1) Kopieren der Testdatei
    FileCopy ImportDatNam, TmpImportDatNam
    FileCopy ImportDatNam, TmpLinkDatNam
    ' -------------------
   
    ' -------------------
    ' 2) Umwandlung der Kopie
    ' Beispiel 1:  10 Zeilen umwandeln
    ExcelDatAlsTextFormatieren TmpImportDatNam, ExcelTabName, 10
    ' Beispiel 2:  alle Zeilen umwandeln
    ExcelDatAlsTextFormatieren TmpLinkDatNam, ExcelTabName
   
    ' -------------------
    ' 3) Importieren/Verknüpfen der Exceltabelle
    ' Beispiel 1: Importieren der Kopie
    DoCmd.TransferSpreadsheet acImport, , ACImportTabName, TmpImportDatNam, True, _
                              ExcelTabName & "!"
'   Kill TmpDatNam ' löschen der Excelkopie
   
    ' Beispiel 2: Verknüpfen der Kopie
    DoCmd.TransferSpreadsheet acLink, , ACLinkTabName, TmpLinkDatNam, True, _
                              ExcelTabName & "!"
End Sub

Sub ExcelDatAlsTextFormatieren(ExcelFullDatNam As String, _
              Optional TabellenBlattname As String, _
              Optional AnzahlKonvertierungZeilen As Long = 0)
' Excel 2002 und 2007 getestet
' wird kein Tabellenblattname angegeben, wird das Blatt verändert, was beim Öffnen
' aktuell ist
' wird die Datei importiert, reicht es (normalerweise) die ersten Zeilen umzuwandeln

    Dim xlApp   As Object ' Excel.Application
    Dim xlBook  As Object ' Excel.Workbook
    Dim xlSheet As Object ' Excel.sheet
    Dim xlCell  As Object ' Excel.cells
   
    ' Excel starten
    On Error Resume Next
    Set xlApp = GetObject(, "Excel.Application")
    If xlApp Is Nothing Then Set xlApp = CreateObject("Excel.Application")
    On Error GoTo 0
   
   
    ' Exceltabellenblatt setzen
    Set xlBook = xlApp.Workbooks.Open(ExcelFullDatNam)
    If Len(TabellenBlattname) <> 0 Then
      Set xlSheet = xlBook.sheets(TabellenBlattname)
    Else
      Set xlSheet = xlBook.ActiveSheet
    End If
    '
    xlApp.Visible = True ' falls man was sehen will
    '
    xlSheet.Activate     ' falls man was sehen will
   
    ' Excel Zellen bearbeiten
    With xlSheet
        For Each xlCell In xlSheet.UsedRange
            xlCell.NumberFormat = "@"
            xlCell.Value = " " & xlCell.Value
            xlCell.Value = Right(xlCell.Value, Len(xlCell.Value) - 1)
           
            ' Ausstieg, wenn  Maximale Zeilenanzahl erreicht
            If AnzahlKonvertierungZeilen <> 0 Then _
              If xlCell.Row = AnzahlKonvertierungZeilen Then Exit For
        Next xlCell
        Debug.Print "In Datei:'" & ExcelFullDatNam & "' Tabelle:'" & _
                    .Name & "' bearbeitet!"
    End With
   
    ' Speichern und aufräumen
    xlBook.Save
    xlBook.Close
    xlApp.Quit
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub


[edit=25.03.2007] Code angepasst[/edit]

_________________
Gruß Steffen


Zuletzt bearbeitet von steffen0815 am 25. März 2007, 14:36, insgesamt 2-mal bearbeitet
anschuh
Im Profil kannst Du frei den Rang ändern


Verfasst am:
25. Jun 2006, 09:15
Rufname:

AW: Überlauf beim Import von Excel Tabelle - AW: Überlauf beim Import von Excel Tabelle

Nach oben
       

Hallo,

endlich komme ich dazu, mich nochmal zu melden. Habe aus Ermangelung an Zeit mein "Überlauf in numerischem Feld"-Problem mit einem Trick gelöst. Bis jetzt funktioniert es ganz gut, ich hoffe nur es holt mich nicht irgendwann wieder ein Smile
Was ich gemacht habe ... Habe eine Zeile in die Exceltabelle eingefügt, in der in jeder Spalte ein Wert mit genau dem Datentyp drinsteht, wie ich es brauche. Also bei PLZ habe ich reingeschrieben D-12345, das ist eindeutig ein String und das sieht Access bisher zum Glück genauso Very Happy
Dann habe ich diese Zeile ausgeblendet, damit meine Kollegen sie nicht versehentlich löschen. Access liest sie trotzdem jedes Mal mit und weis dadurch welche Datentypen ich will.
Wie gesagt, bisher funktionierts...

@Steffen
Vielen Dank für den Code, ich hatte leider sowenig Zeit und habe es deshalb erstmal mit obigem Trick geflickt ... wenn ich wieder mehr Zeit habe, werde ich es nochmal anständig (mit Code) machen, sonst fliegt es mir eines Tages noch um die Ohren Smile

Viele Grüße
Andrea
RobiMaverick
Im Profil kannst Du frei den Rang ändern


Verfasst am:
28. Feb 2007, 12:48
Rufname:

AW: Überlauf beim Import von Excel Tabelle - AW: Überlauf beim Import von Excel Tabelle

Nach oben
       Version: Office 2003

Also die von Steffen vorgeschlagene Idee hat gut geklappt!!! Er liest alles gut ein. Dauert halt ein bissel lange, weil der die ganzen Formate abgleicht. Ein kleinesb Problem ist, dass er meine Datenbank dabei aufbläht!! Kann ich das verhindern? Ist sicher irgendwo was in einem Zwischenspeicher!

Und 2. Frage kann ich einstellen, dass er nur die Formate einer Spalte aktualiesiert? Das betrifft den folgenden Quelltextabschnitt:
Code:
        For Each cell In .ActiveSheet.UsedRange
            cell.NumberFormat = "@"
            cell.Value = " " & cell.Value
            cell.Value = Right(cell.Value, Len(cell.Value) - 1)
        Next cell
Er nimmt hier halt die gesamte Range...

Das wäre echt fett, wenn das auch noch klappen würde!!!

_________________
mfg

Maverick
steffen0815
VBA-Programmierer


Verfasst am:
28. Feb 2007, 14:20
Rufname:

AW: Überlauf beim Import von Excel Tabelle - AW: Überlauf beim Import von Excel Tabelle

Nach oben
       

Hallo,
Zitat:
Ein kleinesb Problem ist, dass er meine Datenbank dabei aufbläht!! Kann ich das verhindern?
Also von der Bearbeitung der Exceldateien bestimmt nicht. Wink
Was tust du eigentlich, welchen Importablauf hast du.

Zitat:
dass er nur die Formate einer Spalte aktualiesiert
Ist problemlos machbar, aber dann klemmts halt mit der Universalität. Ist das ganze Verfahren wirklich so zeitkritisch?
_________________
Gruß Steffen
RobiMaverick
Im Profil kannst Du frei den Rang ändern


Verfasst am:
28. Feb 2007, 14:30
Rufname:

AW: Überlauf beim Import von Excel Tabelle - AW: Überlauf beim Import von Excel Tabelle

Nach oben
       Version: Office 2003

Also so zeitkritisch ist das ganze nicht, aber es wäre schon günsitg, wenn es ein wenig schneller gehen würde.

Zum Iportablauf:

Ich greife auf ne Excel datei zu und ändere deren Format (siehe deine Idee) und speicher sie zwischen. Dann wird dazu einen Verknüpfung in Access erstellt. Von dieser Importdatei wird ein bestimmt Range eingelesen und mittels Anfügeabfrage an eine andere Datei angehangen.
That's it Smile

Noch weitere Fragen?

_________________
mfg

Maverick
steffen0815
VBA-Programmierer


Verfasst am:
28. Feb 2007, 16:29
Rufname:

AW: Überlauf beim Import von Excel Tabelle - AW: Überlauf beim Import von Excel Tabelle

Nach oben
       

Hallo,
also bei diesem Ablauf sehe ich keinen Grund, warum sich die DB aufblähen soll Rolling Eyes .
Dies passiert meiner Meinung nach nur bei Änderungen/Löschen.
Natürlich wächst die DB mit jedem neuen Datensatz, aber Aufblähen?

Die Geschwindigkeit ist schon erschreckend Laughing .
Ich sehe 2 Möglichkeiten zu Steigerung
1) Reduktion der Zeilen
Man müsste mal erforschen/ermitteln wieviele Zeilen Access anschaut, um das Format festzulegen. Dann reicht es natürlich auch nur diese Zeilen zu konvertieren.

2) Einschränkung auf die Spalte

Ich denke Variante 1 ist die effektivste. Hier der Code für beide Varianten:
Code:
        For Each Cell In .ActiveSheet.UsedRange
            If Cell.Column = 1 Then ' nur für 1. Spalte
                Cell.NumberFormat = "@"
                Cell.Value = " " & Cell.Value
                Cell.Value = Right(Cell.Value, Len(Cell.Value) - 1)
            End If
            ' nur für die ersten 10 Zeilen
            If Cell.Row = 10 Then Exit For
        Next Cell

_________________
Gruß Steffen
TomiHarz
VBA-Programmierer


Verfasst am:
19. März 2007, 09:41
Rufname: Tomi
Wohnort: Goslar

AW: Überlauf beim Import von Excel Tabelle - AW: Überlauf beim Import von Excel Tabelle

Nach oben
       

Hallo ich habe das selbe Problem.

Mit DoCmd.TransferSpreadsheet Importiere ich Daten aus dem Excel-Sheet in eine Access-Tabelle und erhalte ab und zu die Fehlermeldung
"Überlauf im Numerischen Feld". Kann mir jemand einen Tipp geben ?

Danke
Willi Wipp
Moderator


Verfasst am:
19. März 2007, 10:32
Rufname:
Wohnort: Raum Wiesbaden


Re: AW: Überlauf beim Import von Excel Tabelle - Re: AW: Überlauf beim Import von Excel Tabelle

Nach oben
       

Hi TomiHarz,

was passt denn nicht an den bisher im Thema gegebenen Tipps?

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Kreuztabellenabfrage für neue Tabelle nutzen 3 WaterMan 805 06. Jul 2004, 14:39
mabe38 Kreuztabellenabfrage für neue Tabelle nutzen
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle exportieren als Excel2000 Arbeitsblatt 1 thomassch 916 06. Jul 2004, 12:46
stpimi Tabelle exportieren als Excel2000 Arbeitsblatt
Keine neuen Beiträge Access Tabellen & Abfragen: Eingabeaufforderung für "Tabelle umbenennen" 1 DJK_2000 823 06. Jul 2004, 11:05
Gast Eingabeaufforderung für "Tabelle umbenennen"
Keine neuen Beiträge Access Tabellen & Abfragen: Importieren einer Excel Tabelle 4 budking82 1948 01. Jul 2004, 17:25
Mike (Gast) Importieren einer Excel Tabelle
Keine neuen Beiträge Access Tabellen & Abfragen: Tage auf Datum addieren und an bestehende Tabelle anfügen... 1 lorelei 1234 11. Jun 2004, 08:38
stpimi Tage auf Datum addieren und an bestehende Tabelle anfügen...
Keine neuen Beiträge Access Tabellen & Abfragen: Import von Textdateien / automatisches Entfernen von Zeichen 1 Ost 660 02. Jun 2004, 11:24
lothi Import von Textdateien / automatisches Entfernen von Zeichen
Keine neuen Beiträge Access Tabellen & Abfragen: Spaltennamen einer Tabelle ermitteln 1 Alexander Neron 899 27. Mai 2004, 13:47
lothi Spaltennamen einer Tabelle ermitteln
Keine neuen Beiträge Access Tabellen & Abfragen: kein Wert in der Tabelle, dann immer Null (0)?? 3 Michel_9 1005 26. Mai 2004, 14:28
Michel_9 kein Wert in der Tabelle, dann immer Null (0)??
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle formatiert in txt-Datei exportieren 1 robby 1115 12. Apr 2004, 23:10
Helge Tabelle formatiert in txt-Datei exportieren
Keine neuen Beiträge Access Tabellen & Abfragen: Werte aus Formular per VBA in andere Tabelle anfügen 1 Gast 1861 04. Apr 2004, 21:27
el_gomero Werte aus Formular per VBA in andere Tabelle anfügen
Keine neuen Beiträge Access Tabellen & Abfragen: Zeilenumbruch nach Einfügen Word Tabelle 2 topflop 1698 30. März 2004, 16:06
Gast Zeilenumbruch nach Einfügen Word Tabelle
Keine neuen Beiträge Access Tabellen & Abfragen: Wert einer Abfrage in Tabelle kopieren? 1 BerlinerWolf 2009 21. März 2004, 12:43
Maya Wert einer Abfrage in Tabelle kopieren?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Web Editor Forum