2017-10-10 12 views
0

Excel VBAを初めて使用しており、ExcelシートからAccessデータベースを更新する予定です。私は、コードを実行すると、私はエラーを取得しています:ExcelシートからAccessデータベースを更新できません

実行時エラー「3001」:引数は、間違ったタイプのものであり、許容範囲である、または1つ別の

と競合しています

私は問題がmyRecordset.Openコマンドであると思いますが、私は完全に固執しており、それを修正する方法を理解することはできません。

アドバイスをいただければ幸いです。

Private Sub CommandButton1_Click() 
    Update MS Access database 

    Dim oConn As Object 
    Dim myRecordset As Object 
    Dim sConn As String 

    sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents\Standard Form for Rate Requests\Database41.accdb" 
    Set oConn = CreateObject("ADODB.Connection") 
    oConn.Open sConn 

    Set myRecordset = CreateObject("ADODB.RecordSet") 
    myRecordset.Open "MainTable", oConn, adOpenForwardOnly, adLockPessimistic, adCmdTable 

    With myRecordset 
     .AddNew 
     .Fields("ID").value = Worksheets("Sheet1").Range("A5").value 
     .Fields("Order Number").value = Worksheets("Sheet1").Range("A5").value 
     .Fields("Requester").value = Worksheets("Sheet1").Range("B2").value 
     .Fields("Request Type").value = Worksheets("Sheet1").Range("B5").value 
     .Fields("Transport Mode").value = Worksheets("Sheet1").Range("C5").value 
     .Fields("Origin").value = Worksheets("Sheet1").Range("B16").value 
     .Fields("Destination").value = Worksheets("Sheet1").Range("I16").value 
     .Fields("Collection Date").value = Worksheets("Sheet1").Range("D5").value 
     .Fields("Delivery Date").value = Worksheets("Sheet1").Range("E5").value 
     .Fields("Note").value = Worksheets("Sheet1").Range("J12").value 

     .Update 
     .Close 
    End With 

    Set myRecordset = Nothing 
    Set oConn = Nothing 
End Sub 

答えて

1

Microsoft Activex Data Objects Libraryへの参照を設定しましたか? 1. [ツール]メニューから[VBE] - [参照先の選択]を選択します。 2.リストから「Microsoft Activex Data Objects Library」を選択します。

0

多くのありがとうGSD !!

Microsoft ActiveX Data Objects 6.1 Libraryを選択しましたが、これで問題は解決しました。また、Accessデータベース(.Fields( "ID")。value = Worksheets( "Sheet1")。Range( "A5")。value)の "ID"フィールドを更新するための参照を削除しなければなりませんでした。

関連する問題