2009年10月18日

ACCESS用VBAメモ~日付データのインポート時のエラー(20091018) 

EXCEL上にある日付型のデータをACCESSにインポート時のエラーについて。

日付データには1900年1月1日以降を対象にシリアル値が割り当てられているが、それ以前の日付にはシリアル値が割り当てられていない為、マクロのアクションでインポートした際に、インポートエラーになる。

エラーになるのは ”2008/10/08” このような”/”の入った場合。”20081008”等なら、単なる文字列として認識されるので問題無し。
(但し、今日、自宅で任意で作成したデータで再現しようとしたが、再現しなかった?)

【試行錯誤】
インポート前のセルで、cstr関数やstr関数で文字列に変更しても失敗。単なるシリアル値になってしまう。
セルの書式を .NumberFormatLocal="@" にしても失敗。

【対処方法】
セル上のデータを一旦、文字列宣言した変数内へ代入。
その時、あまりにもベタだがleft(○○,4) & "/" & mid(○○,6,2) & "/" & right(○○,2)としておく。

それから、元のセルの書式を .NumberFormatLocal="@" で文字に代えてから、変数経由で元のセルにデータを置き換える。

for next文で全件処理後、改めてインポートすると、エラーにならずに全件取り込み完了!

ACCESS上でも問題なく日付型になっているが、スマートじゃないよなあ~。処理件数が千件にも満たないので別に使用上、支障はないが、他にもっと良い方法がないか、考えてみようっと!
ラベル:VBA access
posted by alice-room at 22:40| Comment(0) | TrackBack(0) | 【備忘録B】 | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください

この記事へのトラックバック