Office: CSV Import: Zellen formatieren

Helfe beim Thema CSV Import: Zellen formatieren in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich importiere mit der Methode QueryTables.Add in einer Schleife mehrere identisch aufgebaute CSV Dateien in eine Arbeitsmappe. Dabei... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von D.Mon, 5. Februar 2019.

  1. CSV Import: Zellen formatieren


    Hallo zusammen,

    ich importiere mit der Methode QueryTables.Add in einer Schleife mehrere identisch aufgebaute CSV Dateien in eine Arbeitsmappe. Dabei wird für jede Datei ein neues Tabellenblatt angelegt. Die CSV Datei enthält u. a. Spalten mit Datumswerten.

    Merkwürdigerweise unterscheiden sich die Formatierungen bei den einzelnen Blättern. Bei jeder zweiten Datei / jedem zweiten Arbeitsblatt sind die Datumsspalten als Datumzellen vom Typ *14.03.12 formatiert. Bei der anderen Hälfte der Blätter sind die Datumsspalten als Standardzellen formatiert.

    Fragen:
    1. Wie kan ich schon beim Import mit VBA die entsprechenden Spalten einheitlich als Datumszellen mit einem bestimmten Format formatieren? Mit dem Macrorecorder habe ich schon versucht, das herauszufinden; leider ohne Erfolg.
    2. Wie kann ich nachträglich die Spalten so umformatieren, dass die Inhalte als Datumswert erkannt werden. Aus "15.01.2018" soll "15.01.18" werden. Wenn ich die Zellen als Datum formatiere ändert sich die Darstellung nicht, vermutlich, weil die Werte als String in den Zellen stehen.

    In Spalten mit Eurobeträgen (stehen in der CSV Datei inkl. Euro-Zeichen) gibt es ein ähnliches Verhalten. Die Zellen werden zwar als Währung formatiert, in jedem zweiten Blatt aber mit 5 Kommastellen und in jedem anderen zweiten mit nur 2 Kommastellen. Kann jemand erklären, warum das so ist?

    Danke und Gruß
    D.Mon

    :)
     
  2. Hallo,

    eine der CSV-Dateien wäre halt schon hilfreich.
     
    MisterBurns, 6. Februar 2019
    #2
  3. Ist das wirklich so, sprich auch bei den enthaltenen daten gerade in den besprochenen Spalten?

    Ansonsten: Du führst hier einen SQL-Zugriff auf die CSV-Datei aus, die ja eigentlich eine Tabelle darstellt (Komma statt Spaltenlinie). Mit diesem Zugriff muss fixiert sein, welche Datentypen für diese Spalten zu verwenden sind, von Datentypen leiten sich dann weiter Formate ab.
    Daher muss vorgegeben werden, wie die Tabelle zu lesen ist, also was sind die Spaltentrenner, was die Dezimaltrenner, sind Werte in Anführungszeichen eingeschlossen, welche Codepage wird verwendet usw.
    Die Idee dazu wird aus der Registry geholt und teilweise aus den vorgefundenen Daten interpretiert. Bei Interpretation besteht dann die Möglichkeit von Varianzen, gerade dann, wenn sich Daten doch strukturell unterscheiden können.

    Der bessere Weg ist, selber vorzugeben, wie Daten zu lesen und auszuwerten sind. Das würde man hier mittels einer Datei Schema.ini, die im Verzeichnis der zu lesenden Datei(en) liegt, steuern. Diese Datei hat den Vorrang gegenüber den Einstellungen in der Registry.
     
  4. CSV Import: Zellen formatieren

    Hallo D.Mon,

    Dein Makro zu sehen wäre schon hilfreich!

    So sieht ein Import-Makro üblicherweise aus:
    Code:
    Die rote Zeile gibt vor, wie die einzelnen Spalten der CSV zu handhaben sind, die Schlüsselwerte findest Du hier:
    https://docs.microsoft.com/de-de/off...olumndatatypes
    xlGeneralFormat steht für den Zahlenwert 1
    xlDMYFormat steht für den Zahlenwert 4

    Die Zeile könnte also auch so geschrieben werden:
    .TextFileColumnDataTypes = Array(xlGeneralFormat , xlGeneralFormat , xlGeneralFormat , xlDMYFormat )

    Und damit ist dann klar erkennbar, wie welche Spalte beim Import zu interpretieren ist.

    Grüße
    EarlFred
     
    EarlFred, 6. Februar 2019
    #4
  5. Hast recht.

    Ja. Die CSV Dateien werden automatisiert erzeugt. Originaldateien kann ich wegen sensibler Inhalte nicht hochladen, der Aufbau ist aber beispielhaft wie folgt:

    "28.09.2018";"28.09.2018";"Text eins";"Text zwei ";"Text drei";"Text 4";"3.026,18 €";"2.989,65 €"

    Die richtige Darstellung des Eurozeichens habe ich durch ausprobieren mit manuellem Import herausgefunden. Ich arbeite übrigens am Mac. Warum die gestern angelegte Signatur im Eingangsposting nicht angezeigt wird, weiß ich nicht. Jedenfalls ist nichts mit Registry oder dergleichen *Smilie

    Die Methode QueryTables.Add habe ich aus zwei Gründen gewählt. Erstens steht in der Referenz, dass als Connection auch eine Textdatei angegeben werden kann und zweitens verwendet der Makrorekorder auch diese Funktion.

    Hast recht. Da ich mich aber im Prinzip genau an den Beispielcode in der Befehlsreferenz gehalten habe, hab ich darauf verzichtet.

    Danke für den Hinweis auf "TextFileColumnDataTypes". Damit konnte ich das Problem für die Datumszellen lösen. Für die Währungszellen geht es so nicht, was aber mit dem Importbefehl im Excel übereinstimmt. Die Spalte werden aber (überraschenderweise) als Währungsformat erkannt. Somit kann ich die nach dem Import richtig formatieren.

    Was ich aber immer noch nicht verstehe, ist, warum beim Verarbeiten mehrere Dateien in einer simplen For Each Schleife immer genau jede zweite Datei anders behandelt wird, als die übrigen.

    Nochmal Danke an alle
    Gruß
    D.Mon
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
  6. "geht nicht" ist nicht sonderlich aussagekräftig und hilft daher wenig beim Helfen...

    Bei mir habe ich keinerlei Probleme mit Deinen Musterdaten: Die Zahlen werden einwand- und fehlerfrei als Zahl (Format Währung) erkannt.
    Dezimaltrenner und Tausenderkennzeichen hast Du richtig gesetzt?
    Code:
     
    EarlFred, 7. Februar 2019
    #6
  7. Moin ErarFred,
    ja... du hast ja auch kein Apfelmus *cool.gif*
    In der Win-Version klappt das prima, beim Mac kommt Murks raus. Da steht dann beispielsweise:

    3.026,18 ,Ǩ
     
    Drogist, 7. Februar 2019
    #7
  8. CSV Import: Zellen formatieren

    "geht nicht" bezieht sich in diesem Fall darauf, dass die Eigenschaft "TextFileColumnDataTypes" laut der von Dir verlinkten Onlinereferenz keine Werte annehme kann, die die Formatierung von Währungswerten erlaubt. Kann allerdings sein, dass es noch Werte gibt, die hier nicht dokumentiert sind.

    Damit habe ich kein Problem. Das ist m. E. abhängig von der Textcodierung der Datei. Durch setzen der Eigenschaft "TextFilePlatform" kann man das steuern. Auch hier scheint es mehr Werte zu geben, als in der Referenz angegeben sind. Jedenfalls kann man beim manuellen Import unter "Dateiurspring" eine ganze Latte von Werten auswählen (u. a. Arabisch, Chinesisch, Griechisch, Japanisch etc.)

    Bei mir werden die Währungsdaten auch einwandfrei erkannt, Dezimaltrenner und Tausenderkennzeichen sind richtig gesetzt. Aber einmal mit zwei und einmal mit sechs Nachkommastellen formatiert.

    Meine Anwendung funktioniert jetzt Dank Eurer Unterstützung soweit. Mein Haupt"problem" besteht jetzt nur noch darin, dass ich nicht verstehe, warum bei jedem zweiten Durchlauf unterschiedliche formatiert wird.

    Gruß
    D.Mon
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
Thema:

CSV Import: Zellen formatieren

Die Seite wird geladen...
  1. CSV Import: Zellen formatieren - Similar Threads - CSV Import Zellen

  2. CSV-Import mit seeehr langen Zahlen

    in Microsoft Excel Hilfe
    CSV-Import mit seeehr langen Zahlen: Moin ihr Lieben, ich habe von einem Kunden eine CSV-Datei erhalten mit 19-stelligen Zahlen-Codes, teils auch mit führenden Nullen, die z.B. so aussehen: 0001234567890123456 0012345678901234567...
  3. CSV Import

    in Microsoft Excel Hilfe
    CSV Import: Hallo, ich habe folgende CSV Datei: (kommt aus einem Wettkampfprogramm) und möchte die in Excel öffnen weil ich Rekordanpassungen machen muss, aber bei bestimmten Zeiten wird es falsch...
  4. Nach Import von Kontakten keine Geburtstag

    in Microsoft Outlook Hilfe
    Nach Import von Kontakten keine Geburtstag: Hallo, ich habe meine Kontakte in Outlook über eine csv Datei hinzugefügt. Sie sind auch alle vorhanden auch mit Geburtstagen. Mir werden die Geburtstage aber nicht in meinem Kalender angezeigt....
  5. Automatischer Import der aktuellsten CSV

    in Microsoft Excel Hilfe
    Automatischer Import der aktuellsten CSV: Hallo, Als erstes möchte ich mich bei Euch bedanken das Ihr solchen DAUs wie mich mit Euren Fachwissen unterstützt. Danke. Wie Ihr Euch bei dieser Einleitung sicherlich denken könnt hab ich von...
  6. csv Import Tabelle mit viel Inhalt in einer Zelle

    in Microsoft Excel Hilfe
    csv Import Tabelle mit viel Inhalt in einer Zelle: Hallo, ich habe bei mir auf Arbeit ein sehr altes Informationssystem in dem wir unser Aktenarchiv organisiert haben. In diesem Archivsystem sind Informationen enthalten wie der zeitliche Umfang...
  7. Benutzerdefinierte Felder lassen sich nicht zuordnen. Outlook 365

    in Microsoft Outlook Hilfe
    Benutzerdefinierte Felder lassen sich nicht zuordnen. Outlook 365: Moin, homeofficebedingt wollte ich mal die Zeit nutzen meine Kontakte, die sonst an anderer Stelle verwaltet werden einheitlich in Outlook zu importieren. Anleitung gegoogelt, gefunden, befolgt...
  8. PQ: CSV-Importe aus Ordner (Dateiname in Spalte)

    in Microsoft Excel Hilfe
    PQ: CSV-Importe aus Ordner (Dateiname in Spalte): Hallo zusammen, ein PowerShell-Script fragt Domänen-PCs nach einem bestimmten Treiber mittels dem Befehl driverquery ab und piped das Ergebnis in eine CSV. je PC gibt es eine CSV je CSV 3...
  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