Partilhar via


Como: Armazenar e recuperar valores de data nos intervalos do Excel

Você pode armazenar e recuperar valores em um NamedRange controle ou um objeto da faixa nativo do Excel.

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 2007 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 cai em ou após 1/1/1900, em um intervalo usando ferramentas de desenvolvimento do Office em Visual Studio, ele é armazenado no formato de OLE automação (OA). Você deve usar o FromOADate método para recuperar o valor de OLE automação (OA) datas. Se a data for anterior a 1/1/1900, ele é armazenado como uma seqüência de caracteres.

ObservaçãoObservação

Datas do Excel são diferentes das datas de automação OLE para os primeiros dois meses de 1900. Também há diferenças se a sistema de datas 1904 opção estiver marcada. Os exemplos de código a seguir aborda essas diferenças.

Usando um controle NamedRange

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

Para armazenar um valor de data em um intervalo nomeado

  1. Criar um NamedRange o controle 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", missing), "NamedRange1");
    
  2. Definir a data de hoje como o valor de NamedRange1.

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

Para recuperar um valor de data a partir de um intervalo nomeado

  • Recuperar o valor de 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 os intervalos de Excel nativo

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

  1. Criar um Range que representa a célula A1.

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

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

Para recuperar um valor de data a partir de um objeto nativo de intervalo do Excel

  • Recuperar o valor de 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: Consulte intervalos de planilha no código

Como: Adicionar controles de NamedRange para planilhas

Conceitos

Trabalhando com intervalos

Controle de NamedRange

Parâmetros opcionais em soluções do Office

Outros recursos

Visão geral do modelo de objeto do Excel