次の方法で共有


方法 : Excel の範囲内のデータの値を格納および取得する

更新 : 2007 年 11 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • ドキュメント レベルのプロジェクト

  • アプリケーション レベルのプロジェクト

Microsoft Office のバージョン

  • Excel 2003

  • Excel 2007

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

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

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

1ad4d8d6.alert_note(ja-jp,VS.90).gifメモ :

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", missing), "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", missing);
    
  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 コントロールを追加する

概念

範囲の使用

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

NamedRange コントロール

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