Excel Spalten einfärben

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Excel Spalten einfärben

Beitragvon 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
P. Jossi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
 
Beiträge: 31
Registriert: Mi, 17. Mai 2006 7:16

Re: Excel Spalten einfärben

Beitragvon 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
Gerd Baumgarten
Rookie
Rookie
 
Beiträge: 1
Registriert: Mi, 24. Jul 2013 17:11

Re: Excel Spalten einfärben

Beitragvon 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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13388
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Excel Spalten einfärben

Beitragvon 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...
peternmb
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 431
Registriert: Mi, 01. Feb 2006 17:22
Wohnort: 06618 Naumburg

Re: Excel Spalten einfärben

Beitragvon 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
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1819
Registriert: Fr, 08. Feb 2008 22:29

Re: Excel Spalten einfärben

Beitragvon 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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13388
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Excel Spalten einfärben

Beitragvon 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)
peternmb
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 431
Registriert: Mi, 01. Feb 2006 17:22
Wohnort: 06618 Naumburg

Re: Excel Spalten einfärben

Beitragvon 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
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10281
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: Excel Spalten einfärben

Beitragvon 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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13388
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Excel Spalten einfärben

Beitragvon 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???
peternmb
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 431
Registriert: Mi, 01. Feb 2006 17:22
Wohnort: 06618 Naumburg

Re: Excel Spalten einfärben

Beitragvon 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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13388
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Excel Spalten einfärben

Beitragvon 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 :?
peternmb
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 431
Registriert: Mi, 01. Feb 2006 17:22
Wohnort: 06618 Naumburg

Re: Excel Spalten einfärben

Beitragvon 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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10281
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: Excel Spalten einfärben

Beitragvon 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?
peternmb
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 431
Registriert: Mi, 01. Feb 2006 17:22
Wohnort: 06618 Naumburg

Re: Excel Spalten einfärben

Beitragvon 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: 13388
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Excel Spalten einfärben

Beitragvon 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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13388
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Excel Spalten einfärben [erledigt]

Beitragvon 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
peternmb
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 431
Registriert: Mi, 01. Feb 2006 17:22
Wohnort: 06618 Naumburg


Zurück zu MS Office

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron