方法 : Excel の範囲内のデータの値を格納および取得する
更新 : 2007 年 11 月
対象 |
---|
このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。 プロジェクトの種類
Microsoft Office のバージョン
詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。 |
NamedRange コントロールまたはネイティブな Excel 範囲オブジェクトに対して値の格納や取得を行うことができます。
Visual Studio Tools for Office を使用して、1900 年 1 月 1 日より後の日付の値を範囲に格納すると、OLE オートメーション (OA) 形式で格納されます。OLE オートメーション (OA) の日付の値を取得するには、FromOADate メソッドを使用する必要があります。1900 年 1 月 1 日より前の日付は文字列として格納されます。
メモ : |
---|
1900 年の初めの 2 か月については、Excel の日付と OLE オートメーションの日付は異なります。[1904 年から計算する] オプションが選択されている場合も違いがあります。以下のコード例は、こうした違いには対応していません。 |
NamedRange コントロールの使用
- この例は、ドキュメント レベルのカスタマイズ用に作成されています。次のコードは、ThisWorkbook クラスではなくシート クラスに配置する必要があります。
名前付き範囲に日付の値を格納するには
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");
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 範囲オブジェクトに日付の値を格納するには
セル A1 を表す Range を作成します。
Dim rng As Excel.Range = Me.Application.Range("A1")
Excel.Range rng = this.Application.get_Range("A1", missing);
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 コントロールを追加する