Como armazenar e recuperar valores de datas em intervalos do Excel programaticamente

Você pode armazenar e recuperar valores em NamedRange controle ou um objeto do intervalo do excel nativo.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para Excel 2013 e Excel 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Se você armazenar um valor de data em que esteja ou após 1/1/1900 em um intervalo usando ferramentas de desenvolvimento do Office no Visual Studio, é armazenado no formato OLE de (OA) de automação.Você deve usar o método de FromOADate para recuperar o valor de datas VELHOS de (OA) de automação.Se a data for anterior de 1/1/1900, é armazenada como uma cadeia de caracteres.

ObservaçãoObservação

As datas do excel diferem das datas VELHOS de automação para os dois primeiros de 1900 meses.Também existem diferenças se a opção de o sistema de datas 1904 é marcada.Os exemplos de código abaixo não endereçam essas diferenças.

usando um controle de NamedRange

  • Este exemplo é para personalizações da nível.O seguinte código deve ser colocado em uma classe de folha, não na classe de ThisWorkbook .

Para armazenar um valor de data em um intervalo nomeado

  1. Crie um controle de NamedRange na célula A1.

    Dim NamedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _
        Me.Controls.AddNamedRange(Me.Range("A1"), "NamedRange1")
    
    Microsoft.Office.Tools.Excel.NamedRange NamedRange1 =
        this.Controls.AddNamedRange(this.get_Range("A1"), "NamedRange1");
    
  2. definir a data de hoje como o valor para NamedRange1.

    Dim dt As DateTime = DateTime.Now
    NamedRange1.Value2 = dt
    
    DateTime dt = DateTime.Now;
    NamedRange1.Value2 = dt;
    

Para recuperar um valor de data de um intervalo nomeado

  • Recuperar o valor da data de NamedRange1.

    Dim value As Object = NamedRange1.Value2
    
    If Not value Is Nothing Then
        If TypeOf value Is Double Then
            dt = DateTime.FromOADate(CType(value, Double))
        Else
            DateTime.TryParse(CType(value, String), dt)
        End If
    End If
    
    MessageBox.Show(dt.ToString())
    
    object value = NamedRange1.Value2;
    
    if (value != null)
    {
        if (value is double)
        {
            dt = DateTime.FromOADate((double)value);
        }
        else
        {
            DateTime.TryParse((string)value, out dt);
        }
    }
    MessageBox.Show(dt.ToString());
    

Usando intervalos nativo do excel

Para armazenar um valor de data em um intervalo objeto nativo do excel

  1. crie Range que representa a célula A1.

    Dim rng As Excel.Range = Me.Application.Range("A1")
    
    Excel.Range rng = this.Application.get_Range("A1");
    
  2. definir a data de hoje como o valor para rng.

    Dim dt As DateTime = DateTime.Now
    rng.Value2 = dt
    
    DateTime dt = DateTime.Now;
    rng.Value2 = dt;
    

Para recuperar um valor de data de um intervalo de objeto nativo do excel

  • Recuperar o valor da data de rng.

    Dim value As Object = rng.Value2
    
    If Not value Is Nothing Then
        If TypeOf value Is Double Then
            dt = DateTime.FromOADate(CType(value, Double))
        Else
            DateTime.TryParse(CType(value, String), dt)
        End If
    End If
    System.Windows.Forms.MessageBox.Show(dt.ToString())
    
    object value = rng.Value2;
    
    if (value != null)
    {
        if (value is double)
        {
            dt = DateTime.FromOADate((double)value);
        }
        else
        {
            DateTime.TryParse((string)value, out dt);
        }
    }
    System.Windows.Forms.MessageBox.Show(dt.ToString());
    

Consulte também

Tarefas

Como fazer referência a intervalos de planilhas em código programaticamente

Como: adicionar controles de NamedRange às planilhas

Conceitos

Trabalhando com intervalos

Controle NamedRange

Parâmetros opcionais em soluções do Office

Outros recursos

Visão geral sobre o modelo de objeto do Excel