Seite 1 von 1

Mit win32com in Excel Spalte erzeugen?

Verfasst: Dienstag 2. Februar 2010, 08:36
von gooogle
Hallo

Ist es möglich mit dem win32com in Excel eine neue Spalte zu erzeugen?
Mal angenommen ich möchte die Spalte nach "B" erzeugen, wie würde das gehen?

Grusss und danke

Verfasst: Dienstag 2. Februar 2010, 08:42
von Zap
Muss es win32com sein?
Wenn du hier im Forum nach excel suchst, solltest du auch andere Möglichkeiten finden die (wahrscheinlich) besser zu benutzen sind.

Verfasst: Dienstag 2. Februar 2010, 09:07
von HWK
Meinst Du so etwas?

Code: Alles auswählen

import os
import win32com.client

excel_app = win32com.client.dynamic.Dispatch('Excel.Application')
excel_workbook1 = excel_app.Workbooks.Open(os.path.abspath('Mappe1.xls'))
excel_workbook1.Worksheets('Tabelle1').Columns('C:C').\
    Insert(Shift=win32com.client.constants.xlToRight)
excel_workbook1.Close(SaveChanges=True)
del excel_workbook1
excel_app.Quit()
del excel_app
MfG
HWK

Verfasst: Dienstag 2. Februar 2010, 15:06
von gooogle
HAllo

Ja, das ist genau was ich wollte. Vielen Dank. Leider findet man zu diesen Features keine Dokumentation. Zumindest fand ich nichts.
Ich denke das Ausblenden einer Spalte ist auch möglich?

Grüsse

Verfasst: Dienstag 2. Februar 2010, 15:37
von HWK
Ja, natürlich. Und zwar mit:

Code: Alles auswählen

Delete(Shift=win32com.client.constants.xlToLeft)
Dokumentation braucht man normalerweise auch nicht. Ich zeichne mir immer das gewünschte mit dem Makrorekorder von Excel auf und passe dann das Makro an Python an.
MfG
HWK

Verfasst: Dienstag 2. Februar 2010, 17:21
von karolus
Hallo
Der OP fragt nach "Ausblenden einer Spalte" wird mit ..

Code: Alles auswählen

Delete(Shift=win32com.client.constants.xlToLeft)
..nicht gelöscht?

Gruß Karo

Verfasst: Dienstag 2. Februar 2010, 18:23
von gooogle
Hallo

ja das stimmt. Mit Delete löscht man die Spalte. Aber ich möchte sie nur ausblenden ;)

Habe es mit dem Macro Recorder versucht, aber was ich bekomme ist sowas:

Code: Alles auswählen

Sub Makro1888()
'
' Makro1888 Makro
' Makro am 02.02.2010 von i aufgezeichnet
'

'
    Selection.EntireColumn.Hidden = True
End Sub

Wüsste nicht wie ich auf die Python Schreibweise komme?

Grüssse

Verfasst: Dienstag 2. Februar 2010, 19:00
von gooogle
Hallo

habe es gefunden:

Code: Alles auswählen


excel_workbook.Worksheets('Sheet1').Columns('A:A').EntireColumn.Hidden=True;


Grüsse :D

Verfasst: Dienstag 2. Februar 2010, 19:07
von ms4py
Als Alternative gibt es noch "comtypes".
Ist deutlich eleganter als das win32-Modul.

Verfasst: Dienstag 2. Februar 2010, 19:14
von gooogle
Muss man dafür das Modul comtypes installieren oder ist es in Py. 2.5 schon enthalten?

Grüsse

Verfasst: Dienstag 2. Februar 2010, 20:09
von Dav1d
Probieren geht über Studieren!

und gooogle würde auch helfen

Verfasst: Mittwoch 3. Februar 2010, 07:56
von gooogle
Ja goooogle hat geholfen, danke ;)

ich versuche die ganze zeit mit dem befehl:


Worksheet.Cells(4,1).HorizontalAlignment=constants.xlCenter

eine zelle zu zentrieren. aber da tut sich nix :( komischerweise gibt es auch keine fehlermeldung?
Weiss jemand ob das so richtig geschrieben ist?

Verfasst: Mittwoch 3. Februar 2010, 08:34
von HWK
Also bei mir funktioniert das.

Code: Alles auswählen

excel_workbook1.Worksheets('Tabelle1').Cells(1, 4).HorizontalAlignment = win32com.client.constants.xlCenter
MfG
HWK

Verfasst: Mittwoch 3. Februar 2010, 15:42
von gooogle
ja jetzt gehts