初めて自分の家と他人の家が違う、と意識した時

ExcelのADO接続で教えてください。

ExcelでSQL文を書いているのですが、SQLで""が付く物に関しては、ExcelVBAでは""""と記載する必要があると思います。

例:SQL上では"0000" Excelでは""0000""と記載する。

'の場合はどうすればいいのでしょうか?

SQL上では'0100'の値をExcelで'0100'と記載するとコンパイルエラー 修正:式と出てしまい、マクロを実行することが出来ません。

A 回答 (1件)

Access2010での実証ですので、そちらの接続先のDBによっては機能しないかもしれません。


テーブル T1
フィールド名 F1
F1のデータ
X'mas
'love'
"Peace"
"Pea"ce"
Pea"ce
Snow

としたときに
Sub test()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sSql As String

Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset

'シングルクォートが有る場合は、' を付け足す。X'mas
sSql = "SELECT F1 FROM T1 WHERE F1='x''mas';"
rs.Open sSql, cn, adOpenStatic, adLockReadOnly
Debug.Print rs!f1
rs.Close

'こちらも同様。'love'
sSql = "SELECT F1 FROM T1 WHERE F1='''love''';"
rs.Open sSql, cn, adOpenStatic, adLockReadOnly
Debug.Print rs!f1
rs.Close

'ダブルの場合も同じように。"Peace"
sSql = "SELECT F1 FROM T1 WHERE F1='""peace""';"
rs.Open sSql, cn, adOpenStatic, adLockReadOnly
Debug.Print rs!f1
rs.Close

'これも。"Pea"ce"
sSql = "SELECT F1 FROM T1 WHERE F1='""pea""ce""';"
rs.Open sSql, cn, adOpenStatic, adLockReadOnly
Debug.Print rs!f1
rs.Close

sSql = "SELECT F1 FROM T1 WHERE F1='pea""ce';"
rs.Open sSql, cn, adOpenStatic, adLockReadOnly
Debug.Print rs!f1
rs.Close

'フツーの場合は、文字列ならシングルで囲むだけ
sSql = "SELECT F1 FROM T1 WHERE F1='Snow';"
rs.Open sSql, cn, adOpenStatic, adLockReadOnly
Debug.Print rs!f1
rs.Close

Set rs = Nothing: Set cn = Nothing
End Sub

でイミディエイトウィンドウに出力されました。
    • good
    • 1
この回答へのお礼

ありがとうございます、お陰で無事解決しました

お礼日時:2015/04/01 20:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報