- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excelからAccessのDBを更新でエラー)
ExcelからAccessのDBを更新でエラーが発生する理由と修正方法
このQ&Aのポイント
- ExcelでAccessへのデータ登録はできたが、登録したAccessデータの更新でエラーが発生する。
- エラーの原因は、更新マクロの一部のコードにあり、その部分を修正することでエラーを解消できる。
- 修正後のコードを以下に示す。 ``` strSQL = _ "UPDATE '" & sheet_name & "' " & "SET " & ws.Worksheets(sheet_name).Range("C1").Value & "=" & ws.Worksheets(sheet_name).Range("C2").Value & "," & ws.Worksheets(sheet_name).Range("D1").Value & "=" & ws.Worksheets(sheet_name).Range("D2").Value & "," & "WHERE ref_serial =" & ws.Worksheets(sheet_name).Range("A2").Value ``` 修正の詳細は以下の質問文を参照してください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
"UPDATE '" & sheet_name & "' " & _ を "UPDATE [" & sheet_name & "] " & _ にしてみたら?
その他の回答 (1)
- piroin654
- ベストアンサー率75% (692/917)
回答No.2
「エラーが発生するのは」の以下の7行目の ws.RWorksheets(sheet_name).ange("D2").Value & "," & _ の ange は、 Range では?
質問者
補足
ご指摘ありがとうございます。ws.RWorksheets(sheet_name).ange("D2").Value & "," & _ → ws.RWorksheets(sheet_name).Range("D2").Value & "," & _ にしましたがエラー発生変わらずでした。
お礼
Dim strSQL As String strSQL = _ "UPDATE '" & sheet_name & "' " & _ "SET " & _ ws.Worksheets(sheet_name).Range("C1").Value & "=" & ws.Worksheets(sheet_name).Range("C2").Value & "," & _ ws.Worksheets(sheet_name).Range("D1").Value & "=" & ws.RWorksheets(sheet_name).ange("D2").Value & "," & _ "WHERE ref_serial =" & ws.Worksheets(sheet_name).Range("A2").Value 上記で変数設定の所を全て値にしたらエラー発生しなくなったので、 1つずつ変数に変更していきました。 なお、access側でIDがオートナンバーで主キーになっており、 この主キーをwhereで設定する必要があったので、構成を変更しました。 最終、下記でエラー無く動作できました。 Dim value1 As Single Dim value2 As Single Dim ID As Long Dim ref_serial As String ID = Worksheets("result").Range("A2").value ref_serial = Worksheets("result").Range("B2").value value1 = Worksheets("result").Range("C2").value value2 = Worksheets("result").Range("D2").value Dim strSQL As String strSQL = "UPDATE [" & sheet_name & "] SET result1 ='" & value1 & "' ,result2 ='" & value2 & "' ,ref_serial ='" & ref_serial & "' WHERE ID = " & ID ちなみにUPDATE [" & sheet_name & "]の所はUPDATE '" & sheet_name & "'とするとクエリエラーとなり、 SET以降は[でなくても動作するのが?でした。 [" & sheet_name & "] が大変参考になりました。 ありがとうございます。
補足
回答ありがとうございます。 やってみましたが、状況変わらずオブジェクトが必要です。 のエラー発生です。