Wenn Sie diesen Code verwenden:Wie kann ich das Dialogfeld "Makros/VB-Projekt" beim erneuten Speichern von xls in xlsx mit win32com.client deaktivieren?
import win32com.client as win32
input_files = os.listdir(parent_dir)
input_files = [parent_dir + i for i in input_files if i.endswith('.xls') and not i.endswith('.xlsx')]
for input_file in input_files:
if not os.path.isfile(input_file.replace('.xls', '.xlsx')):
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(input_file)
wb.SaveAs(input_file + "x", FileFormat=51) # FileFormat = 51 is for .xlsx extension
wb.Close() # FileFormat = 56 is for .xls extension
excel.Application.Quit()
auf Excel-Dateien einige Makros/VB-Projekt oft messagebox zeigt sich mit Warnung, dass alle Makros/VB-Projekt verloren gehen enthält, würde ich sie beantworten irgendwie automatisch gerne, für Beispiel: "Ja" oder vielleicht gibt es einen Parameter für SaveAs Funktion oder Einstellungen für
win32.gencache.EnsureDispatch ('Excel.Application')?
Jetzt kann ich einfach Dateien als xlsm mit FileFormat = 51 speichern, aber aus Sicherheitsgründen möchte ich dies nicht tun, ich brauche diese Makros/VB-Projekte wirklich nicht in meinen Dateien.
Versucht excel.DisplayAlerts = False - nicht geholfen.
Denken Sie auch an etwas wie pywinauto, aber vielleicht ist es zu viel und vielleicht gibt es elegantere Lösung?
Versuchen Sie, zuerst die Makros/Formulare und alle VBAs, die hinter den Arbeitsmappen-/Arbeitsblatt-Objekten sitzen, zu entfernen. Dann sollten Sie den Dialog nicht bekommen. Stellen Sie sicher, dass Sie programmatischen Zugriff auf den VBE haben. – steveo40
Kurzer Hinweis - das Speichern als xlsm bringt diesen Dialog nicht, auch FileFormat = 52 ist das xlsm-Format. – Hellohowdododo