Standardmäßiges Anwenden von Einstellungen auf in MS Excel geöffnete CSV-Dokumente

Standardmäßiges Anwenden von Einstellungen auf in MS Excel geöffnete CSV-Dokumente

Endbenutzer eines von uns entwickelten Systems erhalten eine ganz normale CSV-Datei, die sie in MS Excel öffnen. Eine der Spalten enthält Einträge, die aus Zeichenfolgen numerischer Ziffern bestehen. Dies sind keine Zahlen, sondern Kennungen. Wir haben festgestellt, dass die auf diese Spalte angewendete Standardformatierung dazu führt, dass die Einträge als große Zahlen interpretiert werden, die anschließend in wissenschaftlicher Notation wiedergegeben werden. Dies ist bereits eine schlechte Benutzererfahrung – aber warten Sie, es wird katastrophal. Beim Speichern der Datei werden die Daten anscheinend als Gleitkommawert mit einfacher Genauigkeit interpretiert und alle Ziffern nach der 6. werden vollständig abgeschnitten. Wenn der Benutzer die Formatierung ändert, sodass die Spalte vor dem Speichern richtig angezeigt wird, zeigt Excel dieses Verhalten nicht und die Daten werden beim Speichern nicht beschädigt.

Ich habe festgestellt, dass entweder (1) das Ändern des Spaltenformats oder (2) das Deaktivieren der Formelauswertung beide Probleme vermeiden.

Nun meine Frage: Ist es möglich, eine der oben genannten Aktionen oder eine andere Aktion auszuführen, die die oben genannten Probleme standardmäßig beim Öffnen einer CSV-Datei in MS Excel verhindert? Beachten Sie, dass es wahrscheinlich unmöglich wäre, den Kunden davon zu überzeugen, dass Endbenutzer die Formelausführung für alle Dateien deaktivieren müssen, einschließlich Excel-formatierter Dateien. Gibt es eine Möglichkeit, globale Einstellungen festzulegen? Eine Möglichkeit, zu konfigurieren, wie insbesondere CSVs behandelt werden? Eine Möglichkeit, ein Makro an die Excel-Installationen der Benutzer zu verteilen, das auf allen geöffneten CSV-Dateien ausgeführt wird?

Antwort1

Ich habe herausgefunden, dass dies durch das Schreiben eines Excel-Add-Ins erreicht werden kann. Beim Öffnen der Arbeitsmappe kann ich Folgendes tun:

// set format of everything to text
Wb.ActiveSheet.UsedRange.NumberFormat = "@";

// disable further formatting - may not be necessary
Wb.ActiveSheet.EnableFormatConditionsCalculation = "false";

// for any existing cells, overwrite the formatted data with the real data, e.g., the formula
Wb.ActiveSheet.UsedRange.Value = Wb.ActiveSheet.UsedRange.Formula;

Dies funktioniert bei mir in Excel 2010.

verwandte Informationen