Excel Option 'Gesamten Zellinhalt vergleichen" ?

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
2weizen
User
Beiträge: 16
Registriert: Freitag 12. Dezember 2008, 20:32

Moin, moin!

Ich möchte Excel dazu veranlassen, das es bei einer Suche den gesamten Zellinhalt vergleicht. Nur leider scheint diese Option aus Python heraus ignoriert zu werden.
Ich habe schon folgendes probiert:

Code: Alles auswählen

fnd = lst.Find(m, LookAt="xlWhole")
fnd = lst.Find(m, LookAt=1)
fnd = lst.Find(m, LookAt="1")
Alles erfolglos. Bei der der Suche nach 1 wird auch 10, etc., gefunden.

Hat das jemand schonmal erfolgreich versucht und kann mir den richtigen Weg aufzeigen?
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Hast Du schon

Code: Alles auswählen

win32com.client.constants.xlWhole
probiert?
MfG
HWK
2weizen
User
Beiträge: 16
Registriert: Freitag 12. Dezember 2008, 20:32

Bis eben noch nicht. Aber win32com.client.constants.xlWhole gibt bei mir einen Fehler (pywin32-213-py2.6). Habe mal in win32com/client/ geschaut. Dort findet sich nix mit constants. hmm?

Aber laut MSDN hat xlWhole ja den Wert 1, also müsste es doch normalerweise auch damit gehen, oder übersehe ich noch etwas?
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

win32com.client.constants ist eine Instanz der Klasse Constants in __init__.py. Die Konstanten müssen aber erst mit makepy.py erzeugt werden.
Evtl. probierst Du mal

Code: Alles auswählen

fnd = lst.Find(m, None, None, win32com.client.constants.xlWhole)
MfG
HWK
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

mal was generelles zur arbeitsweise mit excel:

führe die gewünschten operationen in der gui durch und zeichne ein makro auf. dann hast du den kram schonmal in vba. das ist dann schonmal ein schöner ausgangspunkt, meist kann man das dann direkt übersetzen.
http://www.kinderpornos.info
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Also bei mir funktioniert es:

Code: Alles auswählen

import os
import win32com.client

excel_app = win32com.client.dynamic.Dispatch('Excel.Application')
excel_workbook = excel_app.Workbooks.Open(os.path.abspath('Mappe1.xls'))
lst = excel_workbook.Worksheets('Tabelle1').Range('a1:a7')
print lst
first = fnd = lst.Find(1, LookAt=win32com.client.constants.xlWhole)
while fnd:
    print fnd.Address
    fnd = lst.FindNext(fnd)
    if fnd.Address == first.Address:
        break
excel_workbook.Close()
del excel_workbook
excel_app.Quit()
del excel_app
liefert die Ausgabe

Code: Alles auswählen

((10.0,), (11.0,), (1.0,), (21.0,), (1.0,), (19.0,), (1.0,))
$A$3
$A$5
$A$7
MfG
HWK
2weizen
User
Beiträge: 16
Registriert: Freitag 12. Dezember 2008, 20:32

So, hatte nun endlich Zeit, mich mal wieder meinem Problem zu widmen.

Danke Dir HWK. makepy war der entscheidende Tip. War zwar der Meinung ich hätte das schonmal ausgeführt, aber wohl doch nicht. :?
Antworten