Cómo: Almacenar y recuperar valores de fecha en rangos de Excel mediante programación

Puede almacenar y recuperar valores de un control NamedRange o de objeto de rango de Excel nativo.

Se aplica a: La información de este tema se aplica a los proyectos de nivel de documento y los proyectos de nivel de aplicación para Excel 2013 y Excel 2010. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.

Si almacena un valor de fecha igual o anterior a 1/1/1900 en un intervalo con las herramientas de desarrollo de Office en Visual Studio, dicho valor se almacena con formato de automatización OLE (OA).Debe utilizar el método FromOADate para recuperar el valor de fechas de automatización OLE (OA).Si la fecha es anterior a 1/1/1900, se almacena como una cadena.

[!NOTA]

Las fechas de Excel difieren de las fechas con formato de automatización OLE en los dos primeros meses de 1900.También existen diferencias si se activa la opción Sistema de fechas de 1904.Los siguientes ejemplos de código no tratan estas diferencias.

Usar un control NamedRange

  • Se trata de un ejemplo para personalizaciones en el nivel del documento.El siguiente código debe colocarse en una clase Sheet, no en la clase ThisWorkbook.

Para almacenar un valor de fecha en un rango con nombre

  1. Cree un control NamedRange en la celda 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. Establezca la fecha actual como valor de NamedRange1.

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

Para recuperar un valor de fecha de un rango con nombre

  • Recupere el valor de fecha 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());
    

Usar rangos de Excel nativos

Para almacenar un valor de fecha en un objeto de rango de Excel nativo

  1. Cree un Range que represente la A1.

    Dim rng As Excel.Range = Me.Application.Range("A1")
    
    Excel.Range rng = this.Application.get_Range("A1");
    
  2. Establezca la fecha actual como valor de rng.

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

Para recuperar un valor de fecha de un objeto de rango de Excel nativo

  • Recupere el valor de fecha 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());
    

Vea también

Tareas

Cómo: Hacer referencia a rangos de hojas de cálculo en el código mediante programación

Cómo: Agregar controles NamedRange a hojas de cálculo

Conceptos

Trabajar con rangos

NamedRange (Control)

Parámetros opcionales en las soluciones de Office

Otros recursos

Información general sobre el modelo de objetos de Excel