Dringend: Delete worksheet funktioniert nicht.

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
python_fan
User
Beiträge: 13
Registriert: Mittwoch 12. März 2008, 14:06

Hallo,

ich möchte ein Arbeitsblatt löschen.

Mein code ist:

Code: Alles auswählen

excel_app = win32com.client.dynamic.Dispatch("Excel.Application")
excel_workbook = excel_app.Workbooks.Open(filename)
excel_workbook.Worksheets(1).Delete()

excel_workbook.Close(SaveChanges=1)
del excel_workbook
excel_app.Quit()
del excel_app
In der Excel-Datei sind drei Arbeitsblätter da. Nach der Ausführung vom Programm ist kein Arbeitsblatt gelöscht. Was habe ich falsch gemacht?
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

mit `del variablenname` löscht du natürlich nur die Bindung des Sheets an `variablenname` und nicht mehr.
python_fan
User
Beiträge: 13
Registriert: Mittwoch 12. März 2008, 14:06

Hallo audax,

kannst du vielleicht näher erläutern? Was muss ich machen, damit ich ein Arbeitsblatt löschen kann?

Ich habe festgestellt, ein leeres Blatt kann ich mit meinem Skript löschen aber nicht ein gefülltes Blatt.

Wer hat eine Idee davon?
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Oh, ich seh gerade, ich hab unrecht:

Code: Alles auswählen

excel_workbook.Worksheets(1).Delete() 
Die Zeile hab ich übersehen :D
Ingorier meine obigen Post also einfach.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Das beantwortet wohl auch Deinen anderen Thread:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

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_app.DisplayAlerts = False
for sheet in excel_workbook1.Worksheets:
    if sheet.Name == 'Tabelle2':
        sheet.Delete()
excel_app.DisplayAlerts = True
excel_workbook1.Close(SaveChanges=True)
del excel_workbook1
excel_app.Quit()
del excel_app
Du solltest Dich aber schon selbst ein bisschen mit VBA beschäftigen und nicht nur darauf vertrauen, dass Dir andere alle Lösungen liefern. Ich habe auch nur wenig Ahnung von VBA, mit der VBA-Hilfe in Excel habe ich aber Deine Probleme bisher lösen können.
MfG
HWK
python_fan
User
Beiträge: 13
Registriert: Mittwoch 12. März 2008, 14:06

Hallo HWK,

vielen vielen Dank für deine Hilfe.

Wenn die Zeit erlaubt, möchte ich auch VBA kennenlernen. Nur in der kurzen Zeit weiß ich nicht, wie ich einsteigen kann.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

python_fan hat geschrieben: Wenn die Zeit erlaubt, möchte ich auch VBA kennenlernen. Nur in der kurzen Zeit weiß ich nicht, wie ich einsteigen kann.
Wenn ich HWK richtig verstanden hab, sollst Du vor allem mal in die VBA-Hilfe reingucken, da die Funtkionen und Parameter im Python Modul mit denen aus VBA übereinstimmen und Du daraus eben Infos und Rückschlüsse für Dein Python-Script ziehen kannst!
python_fan
User
Beiträge: 13
Registriert: Mittwoch 12. März 2008, 14:06

Hallo allerseits,

nochmal vielen Dank für Hilfen und Hinweise aus allen Seiten. Für z.B. delete worksheet habe ich versucht, das Problem selbst zu lösen. Das hat gescheitert bei Fehlen zweier Zeilen:

Code: Alles auswählen

excel_app.DisplayAlerts = False

...

excel_app.DisplayAlerts = True
Nun habe ich eine Frage: Wie finde ich schnell VBA-Hilfe oder VBA Beispiele, damit ich selbst lernen kann?
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Du hast ja sicher Excel installiert. Das sollte erst einmal reichen. Hier findest Du die bereits mehrfach zitierte VBA-Hilfe unter Extras - Makro - Visual Basic-Editor. Blätter dort doch mal ein bisschen. Es finden sich hier viele Beispiele.
Ansonsten: Nimm doch einmal ein Makro in Excel auf und gehe auf Extras - Makro - Makros - Bearbeiten. Dies ist ein guter Start für Deine Pythonscripts.
MfG
Hwk
Antworten