Seite 1 von 1

Excel-Spalten formatieren

Verfasst: Mi, 26. Okt 2016 23:36
von medmaster
Hallo .... :-)
ich habe mal versucht, eine Excelspalte "Geburtsdatum" in Xbase++ umzuformatieren :
Spalteninhalt : 15-Feb-51
So sieht der Makro-VBA-Code aus :

Code: Alles auswählen

    Columns("C:C").Select
    Selection.NumberFormat = "d/m/yyyy;@"
.........
So sah mein Xbase++.Code aus ... leider funkts so nicht - hat das jemand schon probiert ?

Code: Alles auswählen

   			obook  := oExcel:Workbooks:Open(cWahl)
   			oSheet := oBook:activesheet
			oExcel:Columns("C:C"):Select
		       oExcel:Selection:NumberFormat="d/m/yyyy;@"
In der resultierenden .CSV steht dann nur ;d/m/yyyy;
Hat jemand eine Idee ???
Gruß Rainer

Re: Excel-Spalten formatieren

Verfasst: Do, 27. Okt 2016 8:27
von brandelh
Statt:

Code: Alles auswählen

 oExcel:Columns("C:C"):Select
denke ich müsste es das Sheetobjekt sein:

Code: Alles auswählen

oRange :=  oSheet:Columns("C:C")
oRange:NumberFormat := "d/m/yyyy;@"
aber sicherheitshalber werde ich mal auf der Festplatte suchen ...

Code: Alles auswählen

oSheet:Rows(1):Font:Bold := .t. 
oSheet:Columns("A:ZZ" ):AutoFit() // automatische Breite
oSheet:Columns("A:N"  ):HorizontalAlignment =  xlCenter 
oSheet:Columns("O"    ):HorizontalAlignment =  xlRight  


:Select() geht auch, ist wohl die Markierung für die Zwischenablage:

Code: Alles auswählen

aeval(aDateColumns, {|nCol| oSheet:Columns(nCol):NumberFormat := "TT.MM.JJJJ"})
aeval(aTextColumns, {|nCol| oSheet:Columns(nCol):NumberFormat := "@"})
oSheet:Cells(1,1):select()
oSheet:Paste()
oSheet:Cells(1,1):select()
oExcel:visible       := .T.
oSheet:Columns("A:ZZ"):AutoFit()
oSheet:Rows(1):Font:Bold := .t.
oExcel:visible       := .F.

Re: Excel-Spalten formatieren

Verfasst: Do, 27. Okt 2016 20:58
von BJelinek
Ich formatiere die Spalten immer bevor ich die Daten einlese.

Code: Alles auswählen

oSheet:Columns("C:C"):NumberFormat := "TT-MM-YYYY;@" // Datum
oSheet:Columns("G:G"):NumberFormat := "@" // text
oSheet:Columns( "H:H" ):NumberFormat := "#.##0,00" // numerisch
oSheet:Columns("I:I"):ColumnWidth   := 55.00
oSheet:Columns( "J:K" ):NumberFormat := "#.##0,00" // numerisch

Re: Excel-Spalten formatieren

Verfasst: Sa, 29. Okt 2016 23:30
von medmaster
..danke - geht so prima !! Zu den möglichen Parametern bei Zellformatierung und anderen
Funktionen bei VBA Excel find ich nichts - gibts da irgendwas an Übersicht ?
Zum Beispiel : in welcher Form les ich die Spaltenüberschriften aus, wie sieht das
Ergebnis aus - Objekt ? Ein Ergebnis-Array wäre gut ...
Gruß
Rainer

Re: Excel-Spalten formatieren

Verfasst: So, 30. Okt 2016 8:31
von Wolfgang Ciriack
Also ich lese die Daten aus einer Exceldatei immer mit

Code: Alles auswählen

      oWorkBook := oExcel:workbooks:open(cDatei)
      aValues := oWorkBook:workSheets(1):usedRange:value
      l:=len(aValues)
aus. Sind Spaltenüberschriften vorhanden, so hast du die dann im Array aValues[1], in den folgenden die Spaltenwerte.

Re: Excel-Spalten formatieren

Verfasst: So, 30. Okt 2016 21:02
von brandelh
Wolfgangs Methode alles zu lesen ist die schnellste, da ein Zugriff alles liefert,
aber du kannst natürlich auch einzelne Zellen lesen und setzen.

Am Besten in Excel ein Macro aufnehmen, die gewünschte Aktion machen und den VBA Quellcode ansehen.
Früher gab es für Excel etc. VBA Hilfen, die man nachinstallieren konnte - ob die bei den neuen Versionen dabei sind ?

Re: Excel-Spalten formatieren

Verfasst: Mo, 31. Okt 2016 18:26
von medmaster
ich habe eine ganz gute Hilfe oder Übersicht gefunden - muss man eben online haben und dann entsprechend
das Passende suchen :
https://msdn.microsoft.com/de-de/library/ff194068.aspx
Danke für eure Hinweise ..
Rainer

Re: Excel-Spalten formatieren

Verfasst: Di, 01. Nov 2016 12:32
von brandelh
Danke für den LINK :-)