次の方法で共有


方法: プログラムによって Excel の範囲内のデータの値を格納および取得する

NamedRange コントロールまたはネイティブな Excel 範囲オブジェクトに対して値の格納や取得を行うことができます。

対象: このトピックの情報は、Excel 2013 と Excel 2010 のドキュメント レベルのプロジェクトおよびアプリケーション レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。

Visual Studio の Office 開発ツールを使用して 1900 年 1 月 1 日以降の日付の値を範囲に格納した場合、その値は OLE オートメーション (OA) 形式で格納されます。OLE オートメーション (OA) の日付の値を取得するには、FromOADate メソッドを使用する必要があります。1900 年 1 月 1 日より前の日付は文字列として格納されます。

[!メモ]

1900 年の最初の 2 か月については、Excel の日付と OLE オートメーションの日付は異なります。[1904 年から計算する] オプションがオンである場合も、この違いはあります。以下のコード例は、こうした違いには対応していません。

NamedRange コントロールの使用

  • この例は、ドキュメント レベルのカスタマイズ用に作成されています。次のコードは、ThisWorkbook クラスではなくシート クラスに配置する必要があります。

名前付き範囲に日付の値を格納するには

  1. NamedRange コントロールをセル 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. NamedRange1 の値として今日の日付を設定します。

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

名前付き範囲から日付の値を取得するには

  • 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());
    

ネイティブな Excel 範囲の使用

ネイティブな Excel 範囲オブジェクトに日付の値を格納するには

  1. セル A1 を表す Range を作成します。

    Dim rng As Excel.Range = Me.Application.Range("A1")
    
    Excel.Range rng = this.Application.get_Range("A1");
    
  2. rng の値として今日の日付を設定します。

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

ネイティブな Excel 範囲オブジェクトから日付の値を取得するには

  • 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());
    

参照

処理手順

方法: プログラムによってコード内でワークシートの範囲を参照する

方法 : ワークシートに NamedRange コントロールを追加する

概念

範囲の使用

NamedRange コントロール

Office ソリューションの省略可能なパラメーター

その他の技術情報

Excel オブジェクト モデルの概要