Excel: Celle zeilenweise formatieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
menno
User
Beiträge: 9
Registriert: Freitag 10. Februar 2006, 10:19

hi,

ich suche schon eine ganze weile nach einer geeigneten lösung für mein problem.
ich habe vor / muß in einer excel-zelle mehrere textzeilen mit unterschiedlichem inhalt ablegen (xclSheet.Cells(2,10).Value = "...").
leider ist es aber auch erforderlich die textzeilen verschieden einzufärben.
und da hapert es gewaltig.
ich schaff es nur die textfarbe für die gesamte zelle (xclSheet.Cells(2,10).Font.ColorIndex = "3") zu ändern.

wie kann ich mein problem lösen?

vielen dank an euch
menno
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Aus der Excel-Hilfe:
Wenn Sie nicht den gesamten in einer Zelle oder einem Grafikobjekt enthaltenen Text einheitlich formatieren möchten, verwenden Sie die Characters-Eigenschaft, um einen Teil des Textes zurückzugeben.
Als Beispiel wird dort aufgeführt:

Code: Alles auswählen

In diesem Beispiel wird das dritte Zeichen in Zelle A1 der "Sheet1" fett formatiert.

With Worksheets("Sheet1").Range("A1")
    .Value = "abcdefg"
    .Characters(3, 1).Font.Bold = True
End With
Das war das netteste RTFM, das ich jemals irgendwo gepostet hab :-) Hängt wohl damit zusammen, dass ich mich selbst ständig mit Excel rumärgern muss.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
menno
User
Beiträge: 9
Registriert: Freitag 10. Februar 2006, 10:19

hi,

danke schon mal für diese antwort ...
aber soweit bin ich seit dem stellen meiner frage auch gekommen ;o)

nur bekomme es aber scheinbar nicht hin, diese bsp-anweisung nach python zu portieren
xclSheet.Cells(2,10).Characters(1,4).Font.ColorIndex = "3" oder auch
xclSheet.Range("B10").Characters(1,4).Font.ColorIndex = "3"
brechen jeweils mit einem fehler ab:

Traceback (most recent call last):
File "D:\excel.py", line 17, in ?
xclSheet.Cells(2,10).Characters(1,4).Font.ColorIndex = "3"
File "C:\Python22\Core\lib\site-packages\win32com\client\dynamic.py", line 151, in __call__
return self._get_good_object_(apply(self._oleobj_.Invoke,allArgs),self._olerepr_.defaultDispatchName,None)
pywintypes.com_error: (-2147352573, 'Member nicht gefunden.', None, None)

Traceback (most recent call last):
File "D:\excel.py", line 17, in ?
xclSheet.Range("B10").Characters(1,4).Font.ColorIndex = "3"
File "C:\Python22\Core\lib\site-packages\win32com\client\dynamic.py", line 151, in __call__
return self._get_good_object_(apply(self._oleobj_.Invoke,allArgs),self._olerepr_.defaultDispatchName,None)
pywintypes.com_error: (-2147352573, 'Member nicht gefunden.', None, None)

thnx
menno
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Tatsächlich scheint hier ein Fehler in makepy vorzuliegen. Das Characters-Objekt hat keine __call__-Methode, sondern nur folgende:

Delete None
Insert None
_ApplyTypes_ None
__cmp__ None
__getattr__ None
__init__ None
__len__ None
__nonzero__ None
__repr__ None
__setattr__ None
_get_good_object_ None
_get_good_single_object_ None

Leider kenn ich mich nicht gut genug aus mit Windows-Programmierung um das selbst zu implementieren. :-/
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
helmut
User
Beiträge: 57
Registriert: Mittwoch 2. November 2005, 07:45
Wohnort: Dormagen

Hallo menno,

vielleicht waere folgende Vorgehensweise eine Loesung:
Du schreibst in VBA ein Macro, das die Formatierung uebernimmt. Dieses Macro wird von python gestartet. Die notwendigen Werte werden dem Macro als Parameter* uebergeben?!?

Gruss, Helmut

*Nachtrag: statt als Parameter könnten die Werte auch auf einem temporären xls-Tabellenblatt uebergeben werden.
Antworten