Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


803 / 2272 ツリー ←次へ | 前へ→

【9994】データ型のインポートエラーについて ts 07/11/20(火) 17:38 質問[未読]
【9997】Re:データ型のインポートエラーについて 小僧 07/11/21(水) 10:00 回答[未読]
【10005】Re:データ型のインポートエラーについて VBWASURETA 07/11/22(木) 17:37 発言[未読]
【10006】Re:データ型のインポートエラーについて 小僧 07/11/22(木) 17:50 発言[未読]
【10007】Re:データ型のインポートエラーについて VBWASURETA 07/11/22(木) 18:10 回答[未読]
【10023】Re:データ型のインポートエラーについて VBWASURETA 07/11/28(水) 10:06 発言[未読]
【10020】Re:データ型のインポートエラーについて ts 07/11/26(月) 9:36 お礼[未読]

【9994】データ型のインポートエラーについて
質問  ts  - 07/11/20(火) 17:38 -

引用なし
パスワード
   accessでエクセルのデータをマクロでインポートしています。
テキスト型で設定してあるフィールドに数値データと文字データがある場合データを取り込もうとするとデータ型のエラーになります。
数値データと文字データを取り込める方法はないでしょうか?
エクセルでセルの書式で文字列にしてもインポート時に自動で型をaccessが判断してしまい。数値データなら数値データ、文字データなら文字データしかはいらないようになってしまいます。誰かわかる方教えてください。宜しくお願い致します。

【9997】Re:データ型のインポートエラーについて
回答  小僧  - 07/11/21(水) 10:00 -

引用なし
パスワード
   ▼ts さん:
こんにちは。

> 数値データなら数値データ、文字データなら文字データしか
> はいらないようになってしまいます。

当方の環境ではテキスト型に数値は入るのですが…。


> マクロでインポートしています。

あくまでマクロで行うのであれば
Excel側にちょっと細工をしなければいけません。

セルの書式設定で文字型にするのではなく、
数値フィールドの値の先頭に「'」をつけてみて下さい。
(値が 1 の場合 ⇒ '1)

データ行の先頭だけ上記の動作を行えば
数値もテキスト型のフィールドにインポートできるかと思われます。


いちいち細工をせずに行いたい場合は
VBAを使って処理する事になると思われます。

【10005】Re:データ型のインポートエラーについて
発言  VBWASURETA  - 07/11/22(木) 17:37 -

引用なし
パスワード
   こんにちはー。回答というほどまででもないですが。

Accessは2年前に使用していたので、現在のバージョン(使っていたのは97)
ではどうなのでしょうね?

97、2000辺りは確かにインポートしてくるとそのフィールド項目は
テキスト型になっていたと思います。

ただ、インポート/エクスポートのやり方次第で変わった気もします。
曖昧な感じで、すみません。

後、インポートしてくるときに型をウィザードで指定できた気がするのですが。。

【10006】Re:データ型のインポートエラーについて
発言  小僧  - 07/11/22(木) 17:50 -

引用なし
パスワード
   ▼VBWASURETA さん:
こんにちは。

もうちょっとネタがあったのですが、
提示しておりませんでした…すみません。

>ただ、インポート/エクスポートのやり方次第で変わった気もします。
>曖昧な感じで、すみません。


マクロのワークシート変換、VBA のTransferSpreadSheet メソッドの仕様?で
先頭行から数行のデータによりデータ型を判断させている模様です。
(確か24行目かと…)

なのでデータ行の先頭〜24行目までにひとつでも文字型のデータがあればテキスト型、
25行目以降にしか文字型のデータがなければ数値型になってしまう、なんて事も
ありえます。


>後、インポートしてくるときに型をウィザードで指定できた気がするのですが。。

こちらはテキスト変換(TransferText メソッド) ではないでしょうか?

【10007】Re:データ型のインポートエラーについて
回答  VBWASURETA  - 07/11/22(木) 18:10 -

引用なし
パスワード
   小僧 さん:
こんにちはー。

今少し思い出したのですが、型については自動で判定してしまうことがあったので、クエリーに仕組みを作った覚えがありました。

テーブル作成クエリーのフィールドCStr()メソッドを指定して取り込む
事によってテキスト型にした覚えがあります。
書いた内容は2年前なので思い出す必要がありますが、それでテキスト型に
した覚えがあります。

【10020】Re:データ型のインポートエラーについて
お礼  ts E-MAIL  - 07/11/26(月) 9:36 -

引用なし
パスワード
   こんにちは
ご回答ありがとうございました。先頭に’をつけたら取り込めました。
ほんとはACCESSのVBAを使って取り込める法方があればいいのですが、当方初心者なので勉強していきたいと思います。

ありがとうございました。

【10023】Re:データ型のインポートエラーについて
発言  VBWASURETA  - 07/11/28(水) 10:06 -

引用なし
パスワード
   ▼小僧 さん:
こんにちは。

>マクロのワークシート変換、VBA のTransferSpreadSheet メソッドの仕様?で
>先頭行から数行のデータによりデータ型を判断させている模様です。
>(確か24行目かと…)
>
>なのでデータ行の先頭〜24行目までにひとつでも文字型のデータがあればテキスト型、
>25行目以降にしか文字型のデータがなければ数値型になってしまう、なんて事も
>ありえます。

そんな仕様があったのですか・・・。
Access仕様上の問題と思っていたので、仕方ないものだと^^;


>こちらはテキスト変換(TransferText メソッド) ではないでしょうか?

あまりAccessを知らない時期に使ったのはそのメソッドだったと思います。
今もあまり知らないですね^^;

最終的には

SELECT CStr(testfield1),CStr(testfield2) FROM [Excel 8.0;DATABASE=Book1.xls].[Sheet1$]

のようなクエリーを生成したと思います。
当時の資料がもうなくてすみません。

803 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free