2017-10-02 2 views
0

J'ai un problème lors de la mise à jour de mon classeur Excel avec vb.net.format conditionnel lors de la mise à jour Excel Workbook en utilisant vb.net

Fondamentalement, je vais créer un calendrier dans Excel. Donc, à ma première ligne dans Excel j'ai sur chaque cellule une date.

This is my Excel

pour les cellules C2 à I2 I ont un format conditionnel avec une formule:

=AND(C$1>=$A2;C$1<=$B2) 

Cela fonctionne très bien. Quand je change la valeur de B2 en utilisant vb.net Microsoft.Office.Interop.Excel

Dim ExcelFolder As String 
    Dim selectedfile As String 
    Dim excel As Application 
    Dim workbook As Workbook 
    Dim sheet As Worksheet 

    ExcelFolder = "C:\temp" 

    selectedfile = ExcelFolder & "\" & "test.xlsx" 
    excel = New Application 
    excel.Workbooks.Open(selectedfile) 
    workbook = excel.ActiveWorkbook 
    sheet = workbook.Worksheets(2) 

    'change value on B2 
    sheet.Cells(2, 2) = "07.10.2017" 

    workbook.SaveAs("test.xlsx", 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) 
    workbook.Close() 
    excel.Quit() 
    System.Runtime.InteropServices.Marshal.ReleaseComObject(excel) : excel = Nothing 
    System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook) : workbook = Nothing 
    System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet) : sheet = Nothing 

Il va changer la valeur, mais l'arrière-plan ne changerait pas. Je dois aller manuellement à la cellule B2 et appuyez sur ENTRÉE à nouveau, après que le format conditionnel fonctionnera. J'ai essayé d'écrire une Date dans la cellule ou de changer le format de la cellule avant et après l'insertion à Date, sans succès. J'ai également essayé d'ajouter un format conditionnel avec vb.net après avoir inséré les nouvelles données, sans aucun succès. Avez-vous des idées?

Répondre

0

Assurez-vous que la propriété EnableCalculation sur votre objet feuille de calcul est définie sur true:

sheet.EnableCalcuation = True 
sheet.Cells(2, 2) = "07.10.2017" 
+0

La propriété EnableCalculation est vrai, mais la mise en forme conditionnelle ne fonctionnera pas. – SirThouby

+0

Hmm, je me demande si appeler sheet.Calculate() (après avoir appliqué des valeurs) déclenchera le formatage conditionnel. – N0Alias