| 
    
     |  | いつもお世話になっております。 http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=9612;id=excel
 でエクセルから、アクセスへのインポート仕方を教えていただきました。
 丁寧に教えてくださり、感謝しております。
 
 マクロを実行したところ、
 「各段階のOLE DBの操作でエラーが発生しました。
 各OLE DBの状態の値をチェックしてください。
 作業は終了しませんでした。」というエラーになってしまったので、
 もう少し教えて頂けないでしょうか?
 
 '===============================================================
 Public cn As New ADODB.Connection
 Public rs As New ADODB.Recordset
 '===============================================================
 Function open_ado(book_fullname As String) As Long
 On Error Resume Next
 link_opt = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
 "Data Source=" & book_fullname
 '  ↑のよけいなストリングを省くだけ
 と教えて頂いたのですが、何をすれば良いでしょうか?
 
 教えて頂いたモジュールは、下記のように貼り付けてあります。
 何か間違っているところがあるのでしょうか?
 お手数をお掛けして申し訳ないのですが
 よろしくお願いします。
 
 
 Module7に
 
 '==========================================================
 Sub access()
 Dim sql_str As String
 If open_ado("アクセスのある場所\アクセスのファイル名.mdb") = 0 Then
 sql_str = "select * from テーブル名"
 
 If open_rs(sql_str) = 0 Then
 With ActiveSheet
 Set rng = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
 End With
 If rng.Row > 1 Then
 For idx = 1 To rng.Count
 If add_rs(rng.Cells(idx).Resize(1, 22)) <> 0 Then
 Exit For
 End If
 Next idx
 Else
 MsgBox "アクティブシートにデータなし"
 End If
 rs_close
 End If
 close_ado
 Else
 MsgBox "接続失敗"
 End If
 End Sub
 
 Module1に
 '===============================================================
 Public cn As New ADODB.Connection
 Public rs As New ADODB.Recordset
 '===============================================================
 Function open_ado(book_fullname As String) As Long
 On Error Resume Next
 link_opt = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
 "Data Source=" & book_fullname
 '  ↑のよけいなストリングを省くだけ
 cn.Open link_opt
 open_ado = Err.Number
 On Error GoTo 0
 End Function
 '===============================================================
 Sub close_ado()
 On Error Resume Next
 cn.Close
 On Error GoTo 0
 End Sub
 '===============================================================
 Function open_rs(sql_str As String) As Long
 On Error Resume Next
 rs_close
 rs.Open sql_str, cn, adOpenStatic, adLockOptimistic
 If Err.Number <> 0 Then
 MsgBox Error$(Err.Number)
 End If
 open_rs = Err.Number
 On Error GoTo 0
 End Function
 '===============================================================
 Function add_rs(rng As Range) As Long
 On Error GoTo err_add_rs
 With rs
 .AddNew
 For idx = 1 To rng.Count
 .Fields(idx).Value = rng.Cells(idx).Value
 '    第1フィールドをオートナンバにしたので、第2フィールドからテーブルに
 '    追加
 Next idx
 .Update
 End With
 add_rs = 0
 ret_add_rs:
 On Error GoTo 0
 Exit Function
 err_add_rs:
 MsgBox Error$(Err.Number)
 add_rs = Err.Number
 Resume ret_add_rs
 End Function
 '===============================================================
 Sub rs_close()
 On Error Resume Next
 rs.Close
 On Error GoTo 0
 End Sub
 
 |  |