Excel VBA質問箱 IV

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

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


6443 / 13646 ツリー ←次へ | 前へ→

【45202】エクセルからレコード追加 phoo 06/12/15(金) 11:15 質問[未読]
【45205】Re:エクセルからレコード追加 maverick 06/12/15(金) 12:25 回答[未読]
【45207】Re:エクセルからレコード追加 phoo 06/12/15(金) 13:48 お礼[未読]

【45202】エクセルからレコード追加
質問  phoo  - 06/12/15(金) 11:15 -

引用なし
パスワード
   エクセルで作成したデータをそのままアクセスのテーブルへレコード追加したいと思い、下記のようなマクロを作成しました。

これを作動させると、「型が違います」というエラーになる場合があります。
場合があるというのは、同じ一連の流れの中でバグるときとそうでないときがあるということなのですが、原因がわかりません。
どなたかご教授いただけませんでしょうか?(当方、VBA超初心者です…)


−−−−−−−−−−−−−−−−
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Cmd As ADODB.Command
−−−−−−−−−−−−−−−−
Sub Macro()

Set Cn = New ADODB.Connection
Set Rs = New ADODB.Recordset

Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & "\" & SPS.mdb
Rs.Open "DATA", Cn, adOpenDynamic, adLockOptimistic
Rs.AddNew
For i = 0 To Rs.Fields.Count - 1
Rs.Fields(i).Value = Worksheets("UpData").Cells(2, i + 1).Value
Next i

Rs.Update
Set Cmd = Nothing

Rs.Close
Set Rs = Nothing
Cn.Close
Set Cn = Nothing

End Sub

【45205】Re:エクセルからレコード追加
回答  maverick  - 06/12/15(金) 12:25 -

引用なし
パスワード
   ▼phoo さん:
>バグるときとそうでないときがある
とのことなので
>原因がわかりません。
おそらく原因は
>これを作動させると、「型が違います」というエラーになる場合があります。
まんまの意味でしょう。

(要因は沢山あるので)一例ですが、
MDB側のフィールドが数値型の長整数型になっているところに、
文字列や小数などを入れようとしたり、
空文字を許可していないフィールドに、空文字を入れようとしたり
すると型は合いません。


※ところでこれ合ってますか?
& "\" & SPS.mdb

【45207】Re:エクセルからレコード追加
お礼  phoo  - 06/12/15(金) 13:48 -

引用なし
パスワード
   maverick さん
ありがとうございます。

>まんまの意味でしょう。
ほんとにまんまの意味でした。

>(要因は沢山あるので)一例ですが、
>MDB側のフィールドが数値型の長整数型になっているところに、
>文字列や小数などを入れようとしたり、
>空文字を許可していないフィールドに、空文字を入れようとしたり
>すると型は合いません。
アクセスもよくわからないまま作っているのでいろんなところでボロが出ているようです。めげずに勉強していきたいと思います。
今後ともよろしくお願いします。

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