2012-03-22 4 views
0

en excelファイルからデータを読み込んでテーブルに挿入しようとしています。 私は一般的なformatingと、それは何かを含むことができる列があります。バリデーションのテストはコードで行います。私の問題は、私が整数/倍精度浮動小数点型(23)を読んだとき、それは1900年1月22日に変換され、私の場合は論理ではありません。 follwingはエクセルVBAでの日付変換の防止

から
Dim rsExcel As Object 
Set cnnExcel = CreateObject("ADODB.Connection") 
Set rsExcel = CreateObject("ADODB.RecordSet") 
With cnnExcel 
    .Provider = "Microsoft.Jet.OLEDB.4.0" 
    .ConnectionString = "Data Source=D:\Query1.xls;Extended Properties=Excel 8.0" 
    .CursorLocation = 3 
    .Open 
End With  
rsExcel.Open "SELECT * FROM [Sheet 1$]", cnnExcel 
' to read the column 
rsExcel.Fields(3).Value 

を接続し、読むために私のコードであることは、この自動変換

を防止する方法はあります

+0

追加してみてください「データソース= D:\ Query1.xlsを、プロパティ=エクセル8.0を拡張; 1 IMEXは=」 –

+0

は、あなたの答えをありがとう、私は実際にそのプロパティを追加しましたが、私はないと思う –

答えて

0

ではなくValueValue2プロパティを使用してみてくださいあなたの助けをいただき、ありがとうございます。 Value2は、通貨と日付のデータ型、つまり書式設定を無視します。

+0

を助けにはなりませんでしたValue2と呼ばれるメソッド! –

+0

@ Bes-mM-besはい、そうです、私の間違いです。 「Value2」はExcel内にのみ存在し、ワークシートのレコードセットを使用しています。興味のない、なぜあなたはこれをやっていますか?実際にワークシートを読み取るだけで、ワークシートをレコードセットに解析する必要があるのは、なぜ私にとっては意味がありません。 – markblandford

+0

ええ、あなたは正しいです! objWorksheet.Cells(1、1).Value rsExcel.Fields( "columnName")の列の順序が非常に厳しいので、私が必要とするのはExcelファイルを読むことです。 .Valueは "columnName"に直接移動し、列のインデックスに問題はありません。 –