• ベストアンサー
※ 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 ``` 修正の詳細は以下の質問文を参照してください。

質問者が選んだベストアンサー

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.1

"UPDATE '" & sheet_name & "' " & _ を "UPDATE [" & sheet_name & "] " & _ にしてみたら?

3620313
質問者

お礼

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 & "] が大変参考になりました。 ありがとうございます。

3620313
質問者

補足

回答ありがとうございます。 やってみましたが、状況変わらずオブジェクトが必要です。 のエラー発生です。

その他の回答 (1)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

「エラーが発生するのは」の以下の7行目の ws.RWorksheets(sheet_name).ange("D2").Value & "," & _ の   ange は、   Range では?

3620313
質問者

補足

ご指摘ありがとうございます。ws.RWorksheets(sheet_name).ange("D2").Value & "," & _ → ws.RWorksheets(sheet_name).Range("D2").Value & "," & _ にしましたがエラー発生変わらずでした。

関連するQ&A