Microsoft Excel

Herbers Excel/VBA-Archiv

Formatierung Zahl aus Fremddatei | Herbers Excel-Forum


Betrifft: Formatierung Zahl aus Fremddatei von: sim2412
Geschrieben am: 22.02.2010 13:57:12

Hallo,

in SAP erstelle ich eine Auswertung und das Ergebnis hänge ich als .xls Datei an ein Email (Standardfunktion von SAP). Jedoch gibt es nicht die Möglichkeit Formatierungen an Excel mitzuliefern und wird auch nicht unterstützt.

Der Empfänger der Mail öffnet nun den Anhang und die Datei öffnet sich in Excel. Excel erkennt zwar die Zahlen in der Datei, nur das Format passt nicht. Eventuelle "Nullen" hinter dem Komma werden nicht angezeigt.

z.B. 127,12 --> Feldanzeige 127,12
z.B. 80,00 -- > Feldanzeige 80
z.B. 97,30 -- > Feldanzeige 97,3
~f~

Man kann zwar über "Zellen formatieren" das passende Zahlenformat einstellen, aber bei der nächsten Datei muss man dies ja wieder erneut durchführen.

Gibt es eine Funktion bei der ich bereits in der Zelle eintragen kann, beim füllen des Feldes in SAP, dass grundsätzlich eine Zahl mit 2 Nachkommastellen, auch mit Nullen, ausgegeben werden soll ? So was ähnliches wie z.B. beim runden, dort funktioniert es.

~f~
in SAP:
'=runden(' co_out_liste-st_ge ';1)' gc_tab

in Excel steht in der Zelle:
=RUNDEN( 107,32;1) --> Ergebnis ist 107,3

Danke für Eure Mithilfe.

  

Betrifft: =TEXT(RUNDEN(107,32;1);"0,00") oT von: Björn B.
Geschrieben am: 22.02.2010 14:52:47




  

Betrifft: AW: =TEXT(RUNDEN(107,32;1);"0,00") oT von: sim2412
Geschrieben am: 22.02.2010 15:09:10

@Björn

Nur verliere ich dadurch leider die Formatierung Zahl und kann so auch keine Summe mehr bilden bzw. das Feld weiterverarbeiten.


  

Betrifft: AW: =TEXT(RUNDEN(107,32;1);"0,00") oT von: Björn B.
Geschrieben am: 22.02.2010 15:26:23

Hallo,

das stimmt auch wieder. Da hatte ich nicht dran gedacht.
Wie übergibst du denn die Werte?
aus einer Textdatei oder wie funktioniert das? Per Makro?

Kann man nicht schon bei der Übergabe das Format definieren?

Gruß
Björn B.


  

Betrifft: AW: =TEXT(RUNDEN(107,32;1);"0,00") oT von: sim2412
Geschrieben am: 22.02.2010 16:13:06

Hallo,

es gibt in SAP die Möglichkeit direkt in dem Report, wo die benötigten Daten gelesen werden, das Mail mit der Datei zu erstellen und zu versenden. Früher ging das nur über mehrere Ecken, d.h. ich ließ die Auswertung laufen, musste die ALV nach Excel downloaden, formatieren und irgendwo im Laufwerk speichern. Danach ins Notes und von dort versenden - absolut unkomfortabel.

In SAP werden hierzu die ermittelten Werte (einzelnen Felder) aus einer internen Tabelle in einen langen string gelesen und durch das setzen von bestimmten Befehlen (gc_tab = Feldende oder gc_crlf = Zeilenende) wird mitgegeben ob das Feld oder die Zeile zu Ende ist. Sind eigentlich alles Character-Felder, sprich Textfelder. Jedoch kann Excel ja erkennen, dass es sich um Zahlen handelt und formatiert um. Nur fehlen mir die Nachkommastellen.

Beispiel wie die Felder in SAP gefüllt werden:

1. Lesen der Spaltenüberschriften in den string

'Nachname' gc_tab 'Vorname' gc_tab 'Stunden' gc_crlf into string.

2. Lesen der Werte in den string

Mustermann gc_tab Thomas gc_tab 75,00 gc_crlf into string.

In Excel sieht das dann so aus:

https://www.herber.de/bbs/user/68172.xls


Über eine spezielle Methode wird dann aus dem string die Exceltabelle erstellt und versendet. Das einzigste was mitgegeben werden kann ist die Codepage und irgendwelche Texte für das Email, z.B. die Betreffzeile und wie die Exceltabelle heißen soll. Aber Formatierungen usw. werden nicht unterstützt.

Der Empfänger erhält dann in seinem ganz normalen Email-Account (Outlook, Notes etc.) das Email und als Anlage diese Exceldatei.

Und genau bei Punkt 2 des Beispiels wo ich die 75,00 hingeschrieben habe, sollte bei der Übergabe des Feldinhaltes an den string diese Funktion rein, so dass in dem Feld dann nicht nur die Zahl steht, sondern auch die Funktion.

Hat dann nach Deiner ersten Antwort so ausgesehen =TEXT(RUNDEN(75,00;2);"0,00")

Leider kann der Empfänger dann nicht sofort mit den Feldern rechnen und müsste formatieren. Natürlich soll er DAS nicht tun müssen.

Hoffe, dass Du meinem Gedankengang folgen konntest.


  

Betrifft: das wird wohl nicht so einfach... von: Björn B.
Geschrieben am: 22.02.2010 16:35:30

Hallo,

ich denke, ich konnte Dir folgen, auch wenn ich mich mit SAP nicht wirklich auskenne...

Also, so wie ich Dich verstanden habe, werden die Daten von SAP aufbereitet und dann in irgendeiner Form an Excel übergeben (die Excel-Applikation wird auch von SAP gestartet). Es wird eine leere Mappe geöffnet und die Daten werden in dieser Mappe dann auf die Felder aufgeteilt (mit Feldende und Zeilenende).
Excel formatiert dann standardmäßig, genau so, wie wenn du die DAten manuell eingibst. Richtig?

Wenn das so ist, dann liegt das Problem bei SAP und nicht bei Excel. An der Excel-Standardformatierung wirst du nix ändern können. Wie weit du die Übergabe/Aufbereitung aus SAP anpassen kannst weiß ich nicht.

So wie ich das sehe, wirst du das auf direktem weg nicht hinbekommen. Aber über Umwege.
Mal ein paar Ansätze:
- Kannst Du statt der leeren Mappe nicht eine formatierte Vorlage verwenden?
- Kann man ein Programm (in SAP) schreiben, dass dir die Werte in die entsprechenede Zellen schreibt?
- "Nachbehandlung" per Excel-Verknüpfung. Datei ganz normal aus SAP erstellen lassen und dann aus einer Mustervorlage (die wieder entsprechend formatiert ist) Verknüpfungen auf die SAP-Mappe.
- "Nachbehandlung" per VBA - Ein Makro, das Dir die Bereiche in der Mappe formatiert.



Ich habe bei uns in der Firma auch eine Datenübergabe aus ERP-System nach XL-Vorlage programmiert.
Dazu habe ich die Daten per Code in die Mappe geschrieben (einfache Anweisungen, z.B. Wert xy in Zelle B2).
Kompliziertere Dinge (Formatierung, Seiteneinrichtung, usw) habe ich in eine Excel-VBA-Mappe ausgelagert.
Diese wird vom ERP-System geöffnet, die Makros ausgeführt und wieder geschlossen.

Ist natürlich sehr aufwendig, aber es funktioniert.

Vielleicht hilft Dir das ja ein bisschen weiter.

Gruß
Björn B.


Beiträge aus den Excel-Beispielen zum Thema "Formatierung Zahl aus Fremddatei"