2017-01-25 20 views
1

ODBC接続を使用してシートにインポートされるいくつかのフィールドを再フォーマットする方法を探しています。特にフィールドは日付フィールドです。データベースのデータに "1850-01-01"または "0001-01-01"の日付が含まれることがあるので、これらをテキストまたはその他の形式でインポートする必要があります。 Excelにインポートすると、日付は####のように表示されます。Excel VBA ODBC接続のインポートされた列の書式設定

Public Sub REFRESH_DATA() 

Dim cnDB As New ADODB.Connection 'Declare the connection object. 
Dim rsRecords As New ADODB.Recordset 'Declare a Recordset object. 

'Open the connection 

cnDB.Open "DSN=DB;Database=DB;Servername=server.net;UID=username;Password=password;Port=0000;ReadOnly=0;SQLBitOneZero=0;LegacySQLTables=0;NumericAsChar=0;ShowSystemTables=0;LoginTimeout=0;QueryTimeout=0;DateFormat=1;SecurityLevel=onlySecured;CaCertFile=" 

rsRecords.Open "SELECT REGION_CD, CUST_NO, EFF_DATE FROM DATABASE.TABLE", cnDB 

'Print the records in the correct table 
.Range("A2").CopyFromRecordset rsRecords 

'Close everything 
rsRecords.Close 
Set rsRecords = Nothing 
cnDB.Close 
Set cnDB = Nothing 

End Sub 

EFF_DATEが問題の列です。ここで

は、私が現在使用している 編集したクエリです。将来後世のために自分の質問への答え投稿

+0

カラムが日付を表示するだけの幅ではないと確信していますか?列の幅が十分でなく、日付が完全に表示されない場合は、「#####」 – Jordan

答えて

1

:私のSELECT文がEFF_DATEある

は、私は、データベース自体からフォーマットを維持するCAST(EFF_DATE as varchar(30))を読むためにそれを変更しました。

+0

しか表示されません。*データ*に有効な日付範囲外の日付が含まれているためExcelで短い日付として '0'をフォーマットすると、 '1/0/1900'となるので、Excelで最も早く有効な日付は' 1/1/1900'です)。それが作成する問題は、Excelは日付をそのように扱わないということです。詳細については、[Excelで1900年以前の日付を扱う方法](http://www.exceluser.com/formulas/earlydates.htm)を参照してください。 –

+0

この場合、Excel内の日付として書式設定されていないということは、私にとって大きな問題ではありません。しかし、私はあなたがどこから来ているのか理解しています。私はそれらを日付としてフォーマットする必要があります。 – user6949811

関連する問題