Probleme beim speichern eines Excel-workbooks

Schmatz001

Grünschnabel
Hallo zusammen,

ich steh hier vor einem kleinen Problem. In meinem Programm lösche ich bestimme Zeilen aus einer bestehenden Excel-Datei und möchte diese dann einfach speichern.
Und genau da ist mein Problem. Beim speichern fragt er mich immer ob ich die Datei ersetzen will. Es muss doch irgendwie möglich sein, dieses Fenster zu umgehn und
das existierende File einfach zu überschreiben.

Hier mein Code mit dem ich die Datei öffnen, ändern und speichern will.

Code:
        private MSExcel.Application excel;
        private MSExcel.Workbook workbook;
        private MSExcel.Workbooks workbooks;
        protected MSExcel.Worksheet worksheet;

        public void DeleteRows(int zeile)
        {
            string str = "A1:B" + Convert.ToString(zeile);

            OpenExcelWorkbook(@"C:\\PVS.xls");

            worksheet = (MSExcel.Worksheet)workbook.Worksheets[1];
            
            worksheet.Select(Type.Missing);

            MSExcel.Range range = worksheet.get_Range(str, Type.Missing);
            range.Delete(MSExcel.XlDeleteShiftDirection.xlShiftUp);

            NAR(range);
            NAR(worksheet);

            CloseExcelWorkbook();

            NAR(workbook);
            excel.Quit();
            NAR(excel);
        }


        protected void OpenExcelWorkbook(string fileName)
        {
            excel = new MSExcel.Application();

            object missing = Type.Missing;

            if (workbook == null)
            {
                workbooks = excel.Workbooks;
                workbook = workbooks.Open(fileName, missing, missing,
                        missing, missing, missing, missing, missing, missing, missing, missing,
                        missing, missing, missing, missing);
                
            }
        }

        protected void CloseExcelWorkbook()
        {
            string fileName = "C:\\PVS.xls";
            object missing = Type.Missing;
            excel.DisplayAlerts = false;
            workbook.SaveAs(fileName, MSExcel.XlFileFormat.xlExcel7, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, MSExcel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing);
            workbook.Close(false, Type.Missing, Type.Missing);
        }

        protected void NAR(object o)
        {
            try
            {
                if (o != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
                }
            }

            finally
            {
                o = null;
            }
        }
    }

Ich hab es davor auch schon mit workbook.Save() versucht, leider keinen Erfolg. Hoffe einer von euch kann mir einen Tipp zur Lösung meines Problems geben.

MfG
 

Norbert Eder

Erfahrenes Mitglied
Das Excel-Objekt (Application) hat eine Methode AlertBeforeOverwriting. Setz diese vor dem Speichern einfach auf false, dann sollte die Abfrage nicht kommen.
 

Schmatz001

Grünschnabel
Danke Norbert für die schnelle Antwort. Habe es direkt getestet und es funktioniert.

'Wünsch noch nen schönen Tag

MfG

Schmatz