Excel fragt immer nach Speichern

  • C#
  • .NET 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Excel fragt immer nach Speichern

    Neu

    C#-Quellcode

    1. async Task<bool> ReadVariable()
    2. {
    3. bool succeeded = false;
    4. while (!succeeded)
    5. {
    6. //open file excel using microsoft dll
    7. Excel.Application app = new Excel.Application();
    8. //open workbook
    9. Workbook wk = app.Workbooks.Open(excelpath);
    10. //get first sheet
    11. Worksheet sh = wk.Worksheets[1];
    12. //get cell
    13. // Cells[unten/rechts] Example: [1,2] = B1
    14. var day1tag = sh.Cells[27, 2].Value.ToString();
    15. exceltest1.Text = day1tag;
    16. var day1früh = sh.Cells[26, 2].Value.ToString();
    17. Day23oee24.Text = day1früh;
    18. object misValue = System.Reflection.Missing.Value;
    19. app.DisplayAlerts = false;
    20. wk.Close();
    21. app.Quit();
    22. await Task.Delay(15000);
    23. //await Task.Delay(108000000);
    24. }
    25. return succeeded;
    26. }


    Hi Leute also mein Code klappt das einzige Problem was ich hab ist wenn ich die Excel Tabelle öffne und das Programm im hintergrund weiter läuft fragt er mich immer ob ich es speichern will sobald er wieder die zellen ausließt , kann man das irgendwie wegmachen dachte halt eigentlich mit app.DisplayAlerts = false; aber das klappt nicht ....

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MrLaTuNiX“ ()

    Neu

    Laut MS-Dokumentation müsste DisplayAlerts = false die Lösung sein. Es gibt aber anscheinend noch WorkBook.Saved = true, was helfen könnte: docs.microsoft.com/de-de/office/vba/api/excel.workbook.saved

    EDIT: Geht wohl noch besser: wk.Close(false); (docs.microsoft.com/en-us/office/vba/api/excel.workbook.close)
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Neu

    C#-Quellcode

    1. app.DisplayAlerts = false;
    2. wk.Close(false);
    3. app.Quit();


    Selbst wenn ich das jetzt mache und mein Programm im Hintergrund läuft kriege ich einmal die Frage wieder ob ich es speichern soll und wenn ich nein drücke kommt der Fehler vom Programm :
    Es ist der Fehler
    Die Methode ´Save` für das Objekt ´_Workbook´ ist fehlgeschlagen aufgetreten!

    der einzige unterschied ist das ich eine Makro Excel datei öffne und keine normale aber hab eigentlich glesen das soll kein unterschied machen... vielleicht irre ich auch mich


    okay merke grad das er mich das hier fragt : Eine Datei mit dem Namen "name vom File.xlsb" ist bereits an diesem Speicherort vrohanden. Soll sie ersetzt werden ?
    und wenn ich dann auf nein klicke dann kommt der Fehler aber soll halt garnicht die frage stellen.

    hab jetzt auch gefunden das man dass machen kann :

    C#-Quellcode

    1. Workbook wk = app.Workbooks.Open(excelpath, ReadOnly : true);
    aber selbst das bringt garnichts er fragt mich immer noch nach...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MrLaTuNiX“ ()

    Neu


    Okay Leute hab es herausgefunden anscheinend hat es bei mir mit dem Befehl

    C#-Quellcode

    1. wk.Close(0);
    Funktioniert stat false , keine ahnung aber warum ...
    und für die Leute die das Problem haben das der Task-Manger voll wird weil er excel nicht beendet einach :

    C#-Quellcode

    1. private void KillSpecificExcelFileProcess(string excelFileName)
    2. {
    3. var processes = from p in Process.GetProcessesByName("EXCEL")
    4. select p;
    5. foreach (var process in processes)
    6. {
    7. if (process.MainWindowTitle == excelFileName)
    8. process.Kill();
    9. }
    10. }


    und halt dann einfach die Funktion aufrufen ach und dafür braucht ihr

    C#-Quellcode

    1. using System.Linq;
    2. using System.Diagnostics;


    @Marcus Gräfe auch für dich dast mit dem Close(0) falls mal jemand anderes fragt ich würden dann das thema schließen oder ?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MrLaTuNiX“ ()

    Neu

    Das mit 0 statt false ist seltsam, aber gut zu wissen. MS schreibt allerdings explizit, dass false korrekt ist:

    false Änderungen an der Arbeitsmappe werden nicht gespeichert.

    Muss man wohl mit leben. ;)
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum