Python and Excel: Overwriting an existing file always prompts, despite XlSaveConflictResolution value
Asked Answered
S

1

10

I'm using the Excel.Application COM object from a Python program to open a CSV file and save it as an Excel workbook. If the target file already exists, then I am prompted with this message: "A file named '...' already exists in this location. Do you want to replace it?" That message comes up despite the fact that I have set the XlSaveConflictResolution value to xlLocalSessionChanges, which is supposed to automatically overwrite the changes without prompting -- or so I thought.

I'm using Microsoft Office Excel 2007 (12.0.6535.5002) SP2 MSO and ActivePython 2.6.5.14. I have tried all three of the XlSaveConflictResolution values using both constants and integers. I have not tried different versions of Excel.

Here's a code snippet:

import win32com.client
xl = win32com.client.gencache.EnsureDispatch("Excel.Application")
wb = xl.Workbooks.Open(r"C:\somefile.csv")
wb.SaveAs(r"C:\somefile.xls", win32com.client.constants.xlWorkbookNormal, \
    None, None, False, False, win32com.client.constants.xlNoChange, \
    win32com.client.constants.xlLocalSessionChanges)

And here's the spec from Microsoft about the SaveAs method for an Excel workbook object: http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.saveas(VS.80).aspx

Could this be a new "feature" in Excel 2007, or did I just do something wrong?

Stafani answered 30/7, 2010 at 17:29 Comment(0)
S
21

Before saving the file set DisplayAlerts to False to suppress the warning dialog:

xl.DisplayAlerts = False

After the file is saved it is usually a good idea to set DisplayAlerts back to True:

 xl.DisplayAlerts = True
Secularity answered 30/7, 2010 at 18:36 Comment(2)
Thanks, Steven. That worked like a charm. So then what's the purpose of the XlSaveConflictResolution value if it doesn't control this behavior?Stafani
@MikeM.Lin "Specifies the way conflicts are to be resolved whenever a shared workbook is updated"Crouse

© 2022 - 2024 — McMap. All rights reserved.