Hinweise zum neuen Forum
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Excel Spalten einfärben

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Antworten
P. Jossi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 31
Registriert: Mi, 17. Mai 2006 7:16

Excel Spalten einfärben

Beitrag von P. Jossi » So, 26. Jul 2009 20:14

ich übergebe ein grosses Array sehr schnell ins Excel.
Nun sollte ich gezielt einige Zellen einfärben
das durchlaufen des Farbarrays und dann setzen der Farbe mittels interior.ColorIndex =afarb[nfarb]
dauert ewig (bis ca 1 Std.)

wie kann ich die Farben auf einen schlag setzen analog value:=a_daten.
alle Versuche enden bei mir zur Laufzeit mit der Fehlermeldung falscher dateitype

eine Alternative wäre eventuell ein macro das die Zellen anhand ihres Inhaltes einfärbt.
Jede Idee wie man aus xbase ein macro in Excel startet ist darum heiss begehrt.

oder kennt Jemand eine andere Möglichkeit?

ich danke Euch im voraus
P. Jossi

Gerd Baumgarten
Rookie
Rookie
Beiträge: 1
Registriert: Mi, 24. Jul 2013 17:11

Re: Excel Spalten einfärben

Beitrag von Gerd Baumgarten » Mi, 24. Jul 2013 17:15

Hallo P.Jossi,
ich stehe gerade vor genau dem gleichen Problem.
kannst Du mir Tips dazu geben ?
Gruß Gerd

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13588
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Re: Excel Spalten einfärben

Beitrag von brandelh » Mi, 24. Jul 2013 22:10

immer schön in Excel mit "Macro aufzeichnen" was man tun will (eventuell muss man sich die "Entwicklertools" noch freischalten) und dann ansehen wie der VB-Code ansieht:

* Hintergrund mit GELB einfärben

Code: Alles auswählen

Range("A1:A6").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
End With
* Zeichenfarbe in ROT darstellen

Code: Alles auswählen

    Range("A2").Select
    With Selection.Font
        .Color = -16777024
        .TintAndShade = 0
    End With
ich übersetze mal aus der Hüfte ...

Code: Alles auswählen

oExcel := CreateObject("Excel.Application")
IF Empty( oExcel )
    MsgBox( "Excel ist nicht installiert" )
    RETURN
ENDIF

oExcel:DisplayAlerts := .F.
oExcel:visible       := .T.

cDir := CurDrive()+":\"+CurDir()
oBook  := oExcel:workbooks:Add() // oder öffnen ?
oSheet := oBook:ActiveSheet
oSheet:PageSetup:Orientation := xlLandscape // Ausrichtung
* oSheet:Columns( 2 ):NumberFormat := "0.00"  // numerisch
* oSheet:Cells(nRow,1):Value := FIELD->PARTNAME  // inhalte
* oSheet:Columns( 1 ):AutoFit() // automatische Breite 
*  ? oBook:FullName

// Gelber Hintergrund
oRange := oSheet:Range("A1:A6")
oRange:Interior:Pattern = xlSolid   // eventuell auch oRange:Pattern direkt
oRange:Interior:PatternColorIndex = xlAutomatic
oRange:Interior:Color = 65535
oRange:Interior:TintAndShade = 0
oRange:Interior:PatternTintAndShade = 0

// Rote Schrift
oRange := oSheet:Range("A2")
oRange:Font:Color = -16777024
oRange:Font:TintAndShade = 0

oBook:SaveAs(cDir+"\MyExcel.xls",xlWorkbookNormal) // kompatibles Format oder anderes
oExcel:Quit()
oExcel:Destroy()
Die Anweisungen .Select und Selection. sind vermutlich VB Schleifenelemente auf die Anzahl der selektierten Zeilen:

Code: Alles auswählen

?.Select
  With Selection.?
Gruß
Hubert

peternmb
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 431
Registriert: Mi, 01. Feb 2006 17:22
Wohnort: 06618 Naumburg

Re: Excel Spalten einfärben

Beitrag von peternmb » Sa, 03. Okt 2015 17:23

Hallo,

ich hänge mich nochmal an diesen etwas älteren Beitrag weil der mein Probem schon halber löst :wink:

Die Fragen die allerdings noch bleiben:
- wie erhalte ich die Farbwerte für z.B. Grün oder Blau?
- wie kann ich die Schriftattribute (Größe oder z.B. fett) für bestimmte Zellen setzen?

PS.: von VB habe ich absolut keine Ahnung...

georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1867
Registriert: Fr, 08. Feb 2008 22:29

Re: Excel Spalten einfärben

Beitrag von georg » Sa, 03. Okt 2015 19:42

Hallo, Peter -


wie schon geschrieben: einfach in Excel die Makro-Aufzeichnung starten, eine Zelle so, eine andere so einfärben, Aufzeichnung beenden, Makro mit dem Makroeditor anschauen. Da findest Du die Werte, die Du brauchst.
Liebe Grüsse aus der Eifel,

Georg

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13588
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Re: Excel Spalten einfärben

Beitrag von brandelh » Sa, 03. Okt 2015 19:50

Ich kenne nur ausprobieren, als in Excel Entwicklertools unter Optionen anzeigen, Macro aufzeichnen,
dabei GELB GRÜN ROT etc. als Text in Zellen schreiben und einfärben.
Macro speichern und Macro anzeigen lassen, das VB in Excel eignet sich dafür ...
Gruß
Hubert

peternmb
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 431
Registriert: Mi, 01. Feb 2006 17:22
Wohnort: 06618 Naumburg

Re: Excel Spalten einfärben

Beitrag von peternmb » So, 04. Okt 2015 10:55

Danke für die Antworten, das hatte ich schon so ähnlich befürchtet.
Ich hatte die Hoffung, dass jemand sich schon eine Übersicht mit den entsprechnden Werten erstellt hat 8)

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 10364
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: Excel Spalten einfärben

Beitrag von AUGE_OHR » Mo, 05. Okt 2015 1:01

peternmb hat geschrieben:Ich hatte die Hoffung, dass jemand sich schon eine Übersicht mit den entsprechnden Werten erstellt hat 8)
wie wäre es mal Google zu fragen : "excel colorindex"
https://msdn.microsoft.com/de-de/librar ... 40443.aspx
gruss by OHR
Jimmy

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13588
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Re: Excel Spalten einfärben

Beitrag von brandelh » Mo, 05. Okt 2015 14:36

Es geht einfacher ... auf Jimmys Seite gibt es eine Erklärung zur Color Eigenschaft:

Code: Alles auswählen

myChart.Axes(xlValue).TickLabels.Font.Color = RGB(0, 255, 0)

Code: Alles auswählen

RGB Farbfunktionen haben wir auch ...

GraMakeRGBColor( <aRGB> ) --> nRGBColor | NIL 

Parameter 
<aRGB> := { nRed, nGreen, nBlue }
<aRGB> ist ein Array mit drei Elementen, das numerische Werte für die Intensität der Farben Rot, Grün und Blau enthält.
Die Farbe <nColorIndex> wird gemäß der Intensität dieser drei Farben gemischt. 
Die Intensität einer der drei Farben wird durch Werte zwischen 0 und 255 definiert. 
ROT == { 255,0,0 }
Grün == { 0,255,0 }
Blau == { 0,0,255 }
Weiß == { 255,255,255 }
Schwarz == {0,0,0}
etc.

Wenn man die aus der Palette will, ist das mit dem Index wohl besser, ich weiß aber nicht ob die Palette immer gleich ist.
Gruß
Hubert

peternmb
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 431
Registriert: Mi, 01. Feb 2006 17:22
Wohnort: 06618 Naumburg

Re: Excel Spalten einfärben

Beitrag von peternmb » Mo, 05. Okt 2015 16:33

Irgendetwas verstehe ich da nicht so richtig :?
* Zeichenfarbe in ROT darstellen
Range("A2").Select
With Selection.Font
.Color = -16777024
.TintAndShade = 0
End With
Wie komme ich da mit RGB zu dem Wert -16777024???

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13588
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Re: Excel Spalten einfärben

Beitrag von brandelh » Mo, 05. Okt 2015 16:51

Das Minus kommt von unserer Darstellung (Xbase kennt nur LONG), tatsächlich müsste es ein DWORD sein, beides 32 bit integer ... also 4 Byte im Speicher.
Excel über ActiveX setzt das dann richtig um. Ist also nur eine Anzeige Sache ;-)
Gruß
Hubert

peternmb
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 431
Registriert: Mi, 01. Feb 2006 17:22
Wohnort: 06618 Naumburg

Re: Excel Spalten einfärben

Beitrag von peternmb » Mo, 05. Okt 2015 17:24

Dann müsste es doch so funktionieren:

Code: Alles auswählen

// Rote Schrift
oRange := oSheet:Range("B1:B6")
//oRange:Font:Color = -16777024
oRange:Font:Color = GraMakeRGBColor(255, 0, 0)
oRange:Font:TintAndShade = 0
Die Schrift bleibt aber schwarz :?

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 10364
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: Excel Spalten einfärben

Beitrag von AUGE_OHR » Di, 06. Okt 2015 1:09

peternmb hat geschrieben:Dann müsste es doch so funktionieren:

Code: Alles auswählen

//oRange:Font:Color = -16777024
oRange:Font:Color = GraMakeRGBColor(255, 0, 0) // falsche Syntax für ein RGB Array
Die Schrift bleibt aber schwarz :?
zunächst ist deine Syntax falsch.
dann solltest du dir c:\ALASKA\XPPW32\Source\SYS\GraSys.prg ansehen wie GraMakeRGBColor() funktioniert.
da Excel einen negativen Wert haben möchte wäre der Code folgendermassen

Code: Alles auswählen

oRange:Font:Color = GraMakeRGBColor({255, 0, 0})-(256*256*256)
wobei 16777024 kein richtiges ROT ist sondern {192,0,0}
gruss by OHR
Jimmy

peternmb
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 431
Registriert: Mi, 01. Feb 2006 17:22
Wohnort: 06618 Naumburg

Re: Excel Spalten einfärben

Beitrag von peternmb » Di, 06. Okt 2015 10:00

Ja klar ist ja ein Array, da habe ich die geschweiften Klammern vergessen - Danke :idea: .
Ich habe den Wert für das Rot aus dem Beispiel von Hubert übernommen - im Moment bin ich noch am experimentieren.

Doch woher weiß ich ob bzw. wann Excel einen negativen Wert erwartet?

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13588
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Re: Excel Spalten einfärben

Beitrag von brandelh » Di, 06. Okt 2015 10:19

Am Einfachsten einmal bei Excel abfragen (Macro) und DEFINES setzen

Igentlich sollten die Werte automatisch negativ sein, wenn das 32. Bit gesetzt wurde.
Gruß
Hubert

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13588
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Re: Excel Spalten einfärben

Beitrag von brandelh » Di, 06. Okt 2015 10:31

Ich hab mich geirrt, der Zahlenbereich von RGB Zahlen ist zu nieder um überhaupt in negative Werte zu rutschen ...
An RGB value is a long integer value in the range of 0 to &H00FFFFFF.
Keine Ahnung warum Excel das negativ braucht.
Gruß
Hubert

peternmb
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 431
Registriert: Mi, 01. Feb 2006 17:22
Wohnort: 06618 Naumburg

Re: Excel Spalten einfärben [erledigt]

Beitrag von peternmb » Sa, 10. Okt 2015 17:02

brandelh hat geschrieben:Keine Ahnung warum Excel das negativ braucht.
Ich habe mittlerweile gemerkt, dass es auch mit positiven Zahlen problemlos funktioniert.

Auch das Festlegen von Schriftstil und Schriftgröße ist recht simpel:

Code: Alles auswählen

oRange := oSheet:Range("A1:A10")
oRange:Font:Bold = .T.
oRange:Font:Size = 10
//
oRange := oSheet:Range("B1:B10")
oRange:Font:Italic = .T.
oRange:Font:Size = 12
//
oRange := oSheet:Range("C1:C10")
oRange:Font:Strikethrough  = .T.
oRange:Font:Size = 14

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast