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çã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
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");
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
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);
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
Parâmetros opcionais em soluções do Office