Office: (Office 2010) TransferSpreadsheet: Feldnamen ändern sich

Helfe beim Thema TransferSpreadsheet: Feldnamen ändern sich in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; da im Vorfeld nicht feststeht, wie viele Zeilen die Datei hat Daher könnte man im Beispiel lt. #12 eine genügend große Zeilennummer statt 500 angeben... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von tschai, 21. August 2011.

  1. TransferSpreadsheet: Feldnamen ändern sich


    Daher könnte man im Beispiel lt. #12 eine genügend große Zeilennummer statt 500 angeben und die leeren Datensätze mit der gezeigten WHERE-Klausel ausfiltern. Dabei sollte man für die Filterung eine Spalte auswählen, die durchgehend gefüllt ist - sonst würde sich eine ungewünschte Filterung ergeben.

    Das wäre der unaufwändigste Weg, in der Ausführung rasch.
     
  2. Danke, Thomas.
    Soweit war's mir eigentlich klar, ich dachte nur, dass es vielleicht eine Möglichkeit mit einem (Zahlen)Index gibt, damit ich im SQL-Query nicht jeden Feldnamen einzeln angeben muss.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  3. \@ebs17: Du hast in #12 auch den Vorschlag gemacht, die Überschriften im Excel-File anzupassen. Wäre das so viel aufwändiger? Die Lösung würde mir eigentlich besser gefallen.
     
  4. TransferSpreadsheet: Feldnamen ändern sich

    Mir gefallen vor allem Methoden, die direkt und vor allem schnell sind. Der Zugriff auf eine Arbeitsmappe per Automation kann durchaus etwas dauern, vor allem, wenn man eine neue Instanz von Excel erstellen muss.
    Zusätzlich sollte man beachten, dass Excel nicht mehrbenutzerfähig ist und man daher Mehrfachzugriffe (auch eigene) vermeiden sollte. Da sollte man dann auch ein TransferSpreadsheet oder einen SQL-Direktzugriff besser auf die dann wieder geschlossene Mappe vornehmen.
    Code:
    Hier würde einfach die erste Zeile im Arbeitsblatt mit gegebenen Werten überschrieben. Die Werte könnte man statt aus dem Array auch aus einer Tabelle oder einer anderen Quelle entnehmen.
     
  5. Vielen Dank für deine Antwort und Mühe und sorry für die späte Rückmeldung - es hat leider etwas länger gedauert, bis ich alles umgesetzt habe.

    Nachdem ich beide Lösungen ausprobiert habe, finde ich die Variante mit dem Verlinken auch nicht schlecht - habe dabei nur das Problem, dass die Spalten teilweise als Zahlenspalte erkannt werden und dadurch Werte verlorengehen, weil es eben nicht durchgehend Zahlen sind.

    Zu der Variante mit dem Umschreiben der Zeilen: wäre es hier auch möglich, die Datei und einem anderen Namen zu speichern.
    oWB.SaveAs funktioniert nicht und ich habe auch nicht herausgefunden, welche Methoden es gibt, aber vermutlich habe ich auch nur falsch gesucht. *frown.gif*
     
  6. Sollte es aber. Für eine korrekte Anwendung schaust Du in der Excel-VBA-Hilfe nach. Vielleicht hast Du die Anweisung auch nur an falscher Stelle platziert.
    Excel kennt keine Datentypen, die spaltenweit wirken, sondern ein Datentyp kann bestenfalls aus dem Zellinhalt per TYPE-Eigenschaft abgeleitet werden.

    Bei einem Zugriff auf die Exceltabelle per TransferSpreadsheet oder SQL-Anweisung kommt nun als Erstes ein Registry-Eintrag für die Jet-Engine zum Tragen (TypeGuessRows in
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel]), nach dem nun nicht alle Zellen einer Spalte ausgewertet werden, sondern nur die Anzahl laut dem Registry-Eintrag. Wenn nun in diesen ausgewerteten Zellen nur Zahlen vorkommen, wird eben dann von einer Zahlenspalte ausgegangen, und gibt es dann doch weiter unten Texteinträge, dann entstehen Fehler.

    Auswege:

    - Registry-Eintrag auf 0 stellen, dann werden alle Zellen der Spalte ausgewertet. Das kann aber auf Kosten von mehr benötigter Zeit gehen.

    - Die Zellen gefährdeter Spalten auf Text trimmen, lt. Vorschlag MS etwa ...
    Code:
    - Die Exceltabelle als CSV exportieren oder sich gleich als CSV geben lassen. In einer CSV/TXT gibt es nur Text und keine internen eigeninterpretierenden Routinen. Über Importspezifikationen kann man zudem Datentypen und Formate festlegen. Und eine solche Texttabelle ist analog zu obigen Beschreibungen auch verlinkbar und per Anfügeabfrage importierbar.
     
  7. Du hast natürlich recht, bei einem erneuten Versuch funktioniert es. Keine Ahnung, was ich letzte Woche eingegeben habe.

    Kannst du mir erklären, warum
    Code:
    und nicht
    Code:
    Grundsätzlich funktioniert ja beides, bei der Deklaration als Workbook wäre der Vorteil aber, dass die verfügbaren Methoden angezeigt werden.
    Was ist der Vorteil des Objects gegenüber dem Workbook?


    Danke auch für die ausführliche Erklärung bezüglich des Imports.
    Den Registry-Eintrag will ich eigentlich aber nicht umstellen.
    Und die beiden anderen Varianten erscheinen mir in Bezug auf die Performance schlechter, als das Öffnen der Datei und Umschreiben der Überschriften. Oder sehe ich das falsch?
    (Die Möglichkeit, die Daten als csv zu erhalten, habe ich leider nicht.)
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  8. TransferSpreadsheet: Feldnamen ändern sich

    Die erste Dim-Anweisung wird verwendet bei Late Binding (ohne Verweis auf das Objekt), die zweite dann bei Early Binding (mit Verweis).

    Vergleiche dazu auch Erläuterungen von Sascha:
    Anleitung zur Programmierung unter VB/VBA
     
  9. Vielen Dank für den Link - ich denke, ich habe es verstanden.

    Danke auch nochmal für deine Hilfe bei meinen anderen Fragen.
     
Thema:

TransferSpreadsheet: Feldnamen ändern sich

Die Seite wird geladen...
  1. TransferSpreadsheet: Feldnamen ändern sich - Similar Threads - TransferSpreadsheet Feldnamen ändern

  2. Access - Listeneintrag per VBA einem Feldnamen zuweisen

    in Microsoft Access Hilfe
    Access - Listeneintrag per VBA einem Feldnamen zuweisen: Hallo, ich möchte die Einträge eines Listenfelds mit einem bestimmten Feldnamen innerhalb einer VBA-Routine verbinden, stosse da aber programmiertechnisch an meine Grenzen... Hintergrund: Für den...
  3. Feldname für Bedingung zusamensetzen

    in Microsoft Access Hilfe
    Feldname für Bedingung zusamensetzen: Hallo Leute Habe ein Formular mit: ungebundenes Textfeld: Text1 Ereignis: Nach Aktualisierung Wenn ich folgendes nutze funktioniert es: If Me!Text1 "" Then Und die funktionieren nicht: Dim...
  4. Bedingte Formatierung abhängig vom eigenen Feldnamen

    in Microsoft Access Hilfe
    Bedingte Formatierung abhängig vom eigenen Feldnamen: Hallo zusammen, ich habe ein Endlosformular für die monatsweise Anzeige von Mitarbeiter-Schichtmodellen. Das bedeutet 31 Textfelder für max. 31 Tage eines Monats, die von "T1" bis "T31" heißen....
  5. Effizienter Import/Export mit TransferSpreadSheet und FileDialog

    in Microsoft Access Hilfe
    Effizienter Import/Export mit TransferSpreadSheet und FileDialog: Hi Leute, das ist meine erste Anfrage hier im Forum, also weist mich bitte darauf hin, falls ich was vergessen habe. Ich nutze Ac2007. Ich habe für ein simples Fakturierungsprogramm in einem...
  6. Access kürzt Memo Datenfelder bei TransferSpreadSheet nach 255 Zeichen

    in Microsoft Access Hilfe
    Access kürzt Memo Datenfelder bei TransferSpreadSheet nach 255 Zeichen: Hallo zusammen, mich beschäftigt seit zwei Tagen ein Problem für das ich keine richtige Lösung finde. Vielleicht hat einer von euch gleiche Probleme oder sogar eine Lösung. Ich möchte über den...
  7. Laufzeitfehler 3125 bei TransferSpreadsheet

    in Microsoft Access Hilfe
    Laufzeitfehler 3125 bei TransferSpreadsheet: Hallo.... ich möchte bestimmte Arbeitsblätter aus Excel nach Access mit TransferSpreadsheet importieren..aber ich bekomme immer den Fehler 3125. Was ist falsch? DoCmd.TransferSpreadsheet acImport,...
  8. TransferSpreadsheet mit Rückfrage?

    in Microsoft Access Hilfe
    TransferSpreadsheet mit Rückfrage?: Hallo, im Forum habe ich schon viel darüber gefunden, aber keine Lösung für folgendes Problem: DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "Auskopplung", "test.xls"...
  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