Excel non aggiorna i valori delle formule dopo aver riempito le celle di origine con valori


2

Faccio 3 passaggi:

  1. Sulla base di un modello, creo un nuovo file Excel tramite il codice (funziona benissimo):

    Shared Sub FillExcel()
    Dim extension As String = ".xlsx"
    Dim sourcePath As String = "c:\Temp\libro" & extension
    Dim targetPath As String = "c:\Temp\libro - " & DateTime.Now.Hour & DateTime.Now.Minute & extension
    
    'Generar archivo nuevo a partir del anterior
    FileIO.FileSystem.CopyFile(sourcePath, targetPath, True)
    

Il modello ha due fogli:

"Circuito1 $", che riempirò di valori

"Formula $", dove ho una formula che riassume i valori in "Circuito1 $"

  1. Mi riempio il nuovo file di Excel tramite il codice come segue:

        Dim strInsertIntoExcel As String = ""
    Dim cn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & targetPath & ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=0'"
    
    strInsertIntoExcel = "INSERT INTO [Circuito1$] (Fecha,Hora,Valor) values(@date,@time,@values)"
    
    Using cnn As New System.Data.OleDb.OleDbConnection(cn)
        cnn.Open()
        Dim cant As Integer = 0
        Dim value As Decimal
        While cant < 10
    
            value = Convert.ToDecimal(cant * DateTime.Now.Second)
            Dim fecha As Object = DateTime.Now
            Using cmd As OleDbCommand = cnn.CreateCommand()
                cmd.Parameters.AddWithValue("@date", "fecha")
                cmd.Parameters.AddWithValue("@time", "daf1")
                cmd.Parameters.AddWithValue("@values", value)
                Console.WriteLine(value)
                cmd.CommandText = strInsertIntoExcel
                cmd.ExecuteNonQuery()
            End Using
            cant = cant + 1
    
        End While
    
    
    End Using
    
    1. Io verifico nel recente aggiornamento file Excel i valori nella "Formula $" foglio, ma non appaiono aggiornati. Ma se vado alla cella B1, faccio F2 e quindi premo Invio, il risultato della formula viene aggiornato con i giusti valori. Quello che mi aspetto come il comportamento giusto è che il risultato della formula venga mostrato aggiornato automaticamente, senza dover premere F2 e quindi Invio.

NOTA: l'aggiornamento automatico è abilitato nelle cartelle di lavoro, nel modello e nei file generati.

Non riesco a capire perché stia accadendo, perché se riempi i valori manualmente, usando la mia tastiera (invece del codice), funziona bene.

Cosa sta causando questo comportamento?

NOTA: il file modello può essere scaricato qui https://www.dropbox.com/s/duii11fyfh7u2kw/libro.xlsx?dl=0


Hai provato a forzare il calcolo application.calculate?
Máté Juhász,

No, perché non sto usando l'oggetto applicazione per manipolare il file Excel.
Fernando Moyano,

Cosa intendi con non usare l'applicazione, cosa usi? Scrivi nel file senza aprire Excel?
Máté Juhász,

Nel punto n. 2 spiego il modo in cui popolare i valori in Excel, lo faccio tramite OleDbCommand
Fernando Moyano,

Scusa, ancora non capisco. In quale applicazione hai il codice? Apri il file con la macro o semplicemente lo popoli?
Máté Juhász,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.