tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルVB.NETでEXCELの時刻を取得するとDouble型になってしまう
記事No2654
投稿日: 2005/11/28(Mon) 10:34
投稿者ゆう
[OSのVer]:WindowsXP SP2    [VBのVer]:VB.NET2003

はじめまして、ゆうといいます。
よろしくお願いします。

VB.NETでEXCEL上のデータをVB.NETアプリへ取り込む処理を作成しています。

EXCEL上のセル(A1)に「8:30」とあるのですが、
それを「"8:30"」というStringで読み込みたいと考えています。
しかし、「0.35416666666....」といったDoubleの文字列になってしまいます。

dim xlRange = xlSheet.Range("A1:A2")
dim saRet(,) as Object
saRet = xlRange.Value
dim tm as String = saRet(1,1).ToString()

tmが"0.35416666666...."となってしまい、"8:30"で取得できません。

"8:30"で取得するにはどうしたらよろしいでしょうか。
よろしくお願いします。

[ツリー表示へ]
タイトルRe: VB.NETでEXCELの時刻を取得するとDouble型になってしまう
記事No2656
投稿日: 2005/11/28(Mon) 11:25
投稿者魔界の仮面弁士
> saRet = xlRange.Value
セル書式に依存した値を得たいのであれば、Value ではなく、Text を使いましょう。

[ツリー表示へ]
タイトルRe^2: VB.NETでEXCELの時刻を取得するとDouble型になってしまう
記事No2657
投稿日: 2005/11/28(Mon) 11:41
投稿者ゆう
[OSのVer]:Windows    [VBのVer]:VB.NET  
> > saRet = xlRange.Value
> セル書式に依存した値を得たいのであれば、Value ではなく、Text を使いましょう。

ありがとうございます。
saRet = xlRange.Value

saRet = xlRange.Text
に変更したところ
System.InvalidCastException 指定されたキャストは有効ではありません。
が発生してしまいます。

Valueの場合と処理方法が異なるのでしょうか。

[ツリー表示へ]
タイトルRe^3: EXCELの時刻を取得すると...
記事No2661
投稿日: 2005/11/28(Mon) 13:46
投稿者花ちゃん
> System.InvalidCastException 指定されたキャストは有効ではありません。
> が発生してしまいます。

セル個別に取得して見て下さい。

又は、下記のようにクリップボード経由で取得するとか。

Dim xlRange As Excel.Range
xlRange = xlSheet.Range("A1:A2")
xlRange.Value = "8:30"
xlRange.Copy()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange)
Dim iData As IDataObject = Clipboard.GetDataObject()
Dim myText As String
If iData.GetDataPresent(DataFormats.Text) Then
    myText = CType(iData.GetData(DataFormats.Text), String)
End If
Debug.WriteLine(myText)

[ツリー表示へ]