2017-02-17 4 views
-1

Je lance un thread pour sauvegarder automatiquement les fichiers Excel toutes les 5 minutes. Lors de l'enregistrement, le fichier d'enregistrement (fileA) sera activé. Et en même temps, je éditais un autre fichier (fichierB). Comment puis-je sauvegarder fileA en arrière-plan lorsque j'utilise fileB? Voici mon code C# en fil:comment enregistrer les fichiers Excel ouverts en arrière-plan toutes les 5 minutes?

while (true) 
{ 
    Thread.Sleep(AutoSaveTime); 
    if (isRunning) 
    { 
     try 
     { 
      Workbooks files = Globals.ThisAddIn.Application.Workbooks; 
      foreach (Workbook book in files) 
      { 
       if (book.Saved != true 
          && book != Globals.ThisAddIn.Application.ActiveWorkbook) 
       { 
        book.Save(); 
       } 
      } 
      Globals.ThisAddIn.Application.ActiveWorkbook.Save(); 
     } 
     catch (Exception) 
     { 
     } 
    } 
} 
+1

Juste curieux, mais pourquoi pas seulement [modifier l'heure AutoSave] (https://support.office.com/en-us/article/Help-protect-your-files-in-case-of- a-crash-551c29b1-6a4b-4415-a3ff-a80415b92f99) dans Office? – BruceWayne

+0

Merci pour votre réponse! AutoRecover dans Office n'est pas assez simple pour mes clients. Ils ont juste besoin de la fonction AutoSave ... –

Répondre

0

essayer.

wbook.SaveAs("c:\\temp\\blah", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, 
      false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
wbook.Close(); 

Ou, mettez cet extrait de code VBA dans ThisWorkbook Module.

Private Sub Workbook_Open() 
Application.OnTime Now + TimeValue("00:05:00"), "SaveThis" 
End Sub