• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excelで’付きデータのoracle登録)

Excelで’付きデータのOracle登録

このQ&Aのポイント
  • Excelマクロを使用してOracleのテーブルにデータを登録する際、文字列の中に'が含まれると登録ができません。修正方法を教えてください。
  • Excelマクロでデータの登録において、name2のデータに'が含まれる場合は登録ができません。その問題を解決する方法を教えてください。
  • Excelのマクロを使用してOracleにデータを登録する際に、name2のデータに'が含まれる場合、登録ができません。解決策を教えてください。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.3

https://oracle.programmer-reference.com/sql-singlequotation/ の対応、つまり、 .CommandText を組み立てる前に name2 = Replace(name2, "'", "''") を実行します。

3620313
質問者

お礼

回答ありがとうございます。 教えていただいた内容が参考になりデータ追加できました。 name2はテーブルの項目名になるので、対応としては、excel帳票の中で PEOPLE'S→PEOPLE''S と置換しました。 ’が使用されている文字列が多かったら、マクロで対応とも考えましたが、この文字列1ケだけが’付きだったので上記の様に置換で対応しました。 excelからoracleへのデータ追加マクロは他にもあり、そちらは'付きでもデータ追加できていたのですが、処理時間が遅いので、今回事例であげたマクロで対応出来て時間短縮となり、非常に助かりました。(^^)/

その他の回答 (2)

  • maiko04
  • ベストアンサー率17% (345/1956)
回答No.2

文法がわからんので .CommandText = 'insert into table ' & ' (name1, name2)' & '' _ & 'VALUES("' & ActiveSheet.Cells(row, 1) & '","' & ActiveSheet.Cells(row, 2) & '")' か .CommandText = "insert into table " & " (name1, name2)" & "" _ & "VALUES(\'" & ActiveSheet.Cells(row, 1) & "\','" & ActiveSheet.Cells(row, 2) & "')" か .CommandText = "insert into table " & " (name1, name2)" & "" _ & "VALUES(''" & ActiveSheet.Cells(row, 1) & "'','" & ActiveSheet.Cells(row, 2) & "')" あたりでうまくいきませんか?

3620313
質問者

お礼

回答ありがとうございます。 3件試しましたが、3件ともだめでした。

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

Oracleでは、'は文字列を囲むときに使われる文字なので、エスケープが必要だと思います。 'を\'とバックスラッシュ(日本語環境では円記号かも)を前に付けてください。

3620313
質問者

お礼

回答ありがとうございます。 'を\'とバックスラッシュ(日本語環境では円記号)を前に付ける対応ではだめでした。

関連するQ&A