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

Actualización: noviembre 2007

Se aplica a

La información de este tema sólo se aplica a los proyectos y versiones especificados de Visual Studio Tools para Office de Microsoft Office.

Tipo de proyecto

  • Proyectos de nivel de documento

  • Proyectos de nivel de aplicación

Versión de Microsoft Office

  • Excel 2003

  • Excel 2007

Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto.

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

Si almacena un valor de fecha igual o anterior a 1/1/1900 en un rango con Visual Studio Tools para Office, se almacena en 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 se diferencian de las fechas 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", missing), "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", missing);
    
  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: Enviar valores a celdas de hojas de cálculo

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

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

Conceptos

Trabajar con rangos

Información general sobre el modelo de objetos de Excel

NamedRange (Control)

Descripción de los parámetros opcionales en las soluciones de Office