Einzelnen Beitrag anzeigen

Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Excel schließen und speichern(!)

  Alt 24. Jun 2007, 23:05
Hallo computer-glossar.de,

mit WBobj.saved:= FALSE wird EXCEL vorgespielt, dass es noch nicht gespeicherte Änderungen gibt. Mit SaveChanges muss auf TRUE gesetzt werden, sonst werden die Änderungen im WorkBook nicht abgespeichert. Mit Excel.DisplayAlerts := FALSE; währe ich sehr vorsichtig. Man sollt die Rückfragen auch wieder vor dem Verlassen zurückstellen, weil alle Rückfragen ausgestellt werden!

Wenn man Excel.DisplayAlerts := FALSE; benutzt sollte man es so anwenden:

Delphi-Quellcode:
{-------------------------------------------------------------------------------
Funktion:  EXCELOhneNachFragenSchliessen()
Bemerkung: Mit dieser Function wird das neu aktive WorkBook unter den unter
            DateiName angegeben Namen abgespeichert. Dabei wird die Rückfrage
            "Sollen Ihre Änderungen in <Datei> gespeichert werden?" erscheint
            immer, wenn eine Arbeitsmappe geschlossen wird, welche nicht
            gespeicherte Änderungen enthält unterdrückt. Die Datei wird immer
            abgespeichert, auch wenn diese keine Änderung enthält.
Parameter: m_Excel :Variant    // Ist die Excel-Apllication-Variable.
            WorkBobj:olevariant  // Ist die Aktuelle Workbook-Variable.
            DateiName: String    // Ist der komplette Path mit Laufwerk, Path
                                // und DateiName.
Functions-Wert: = TRUE  // alles Klar die Datei ist normal abgespeichert
                        // worden.
                = FALSE // Es ist beim Abspeichern ein Fehler aufgetreten.
Version:    1.01
letz.Ändr.: 12.05.2006
-------------------------------------------------------------------------------}

function EXCELOhneNachFragenSchliessen(m_Excel: Variant; WorkBobj: olevariant;
         const DateiName: String): Boolean;
begin
  Result:= FALSE;
  m_Excel.Application.DisplayAlerts := False; // Alle Rückfragen ausstellen
  try
    WorkBobj.saved := FALSE;
    WorkBobj.Close (saveChanges:=TRUE, FileName:=DateiName);
    Result:= TRUE; // Alles OK dann wird TRUE zurückgegeben.
  finally
    m_Excel.Application.DisplayAlerts := TRUE; // Alle Rückfragen anstellen
    m_Excel.Quit;
  end;
end;
Wenn dann ein Fehler auftritt, weil der Path oder die Laufwerk Angaben nicht stimmen, werden die Rückfragen wieder angezeigt.


Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat