Excel-Spalten formatieren

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
medmaster
UDF-Programmierer
UDF-Programmierer
Beiträge: 58
Registriert: Di, 29. Jan 2008 1:43

Excel-Spalten formatieren

Beitrag 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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Excel-Spalten formatieren

Beitrag 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.
Gruß
Hubert
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: Excel-Spalten formatieren

Beitrag 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
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
medmaster
UDF-Programmierer
UDF-Programmierer
Beiträge: 58
Registriert: Di, 29. Jan 2008 1:43

Re: Excel-Spalten formatieren

Beitrag 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
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Excel-Spalten formatieren

Beitrag 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.
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Excel-Spalten formatieren

Beitrag 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 ?
Gruß
Hubert
medmaster
UDF-Programmierer
UDF-Programmierer
Beiträge: 58
Registriert: Di, 29. Jan 2008 1:43

Re: Excel-Spalten formatieren

Beitrag 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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Excel-Spalten formatieren

Beitrag von brandelh »

Danke für den LINK :-)
Gruß
Hubert
Antworten