EXCEL上にある日付型のデータをACCESSにインポート時のエラーについて。
日付データには1900年1月1日以降を対象にシリアル値が割り当てられているが、それ以前の日付にはシリアル値が割り当てられていない為、マクロのアクションでインポートした際に、インポートエラーになる。
エラーになるのは ”2008/10/08” このような”/”の入った場合。”20081008”等なら、単なる文字列として認識されるので問題無し。
(但し、今日、自宅で任意で作成したデータで再現しようとしたが、再現しなかった?)
【試行錯誤】
インポート前のセルで、cstr関数やstr関数で文字列に変更しても失敗。単なるシリアル値になってしまう。
セルの書式を .NumberFormatLocal="@" にしても失敗。
【対処方法】
セル上のデータを一旦、文字列宣言した変数内へ代入。
その時、あまりにもベタだがleft(○○,4) & "/" & mid(○○,6,2) & "/" & right(○○,2)としておく。
それから、元のセルの書式を .NumberFormatLocal="@" で文字に代えてから、変数経由で元のセルにデータを置き換える。
for next文で全件処理後、改めてインポートすると、エラーにならずに全件取り込み完了!
ACCESS上でも問題なく日付型になっているが、スマートじゃないよなあ~。処理件数が千件にも満たないので別に使用上、支障はないが、他にもっと良い方法がないか、考えてみようっと!
2009年10月18日
この記事へのコメント
コメントを書く
コチラをクリックしてください
この記事へのトラックバック