■ADOを使い、OracleのデータベースをAccessにインポート(バックアップする)

Oracle接続はODBC、DSNが必要


下記をAccessのプロシージャにいれ、単純に実行する by TKC
テーブルがあれば確認をする。


Sub ita_import()

Dim adoCnn As Object 'ADODB.Connection
Dim adoRec As Object 'ADODB.Recordset
Dim tblName As String

DoCmd.SetWarnings False
Set adoCnn = CreateObject("ADODB.Connection")
adoCnn.Open "Driver={Microsoft ODBC for Oracle};" & _
"CONNECTSTRING=TEST_DSN; UID=TEST_USER; PWD=TEST_PASSWORD;"
strSQL = "SELECT * FROM USER_TABLES"
Set adoRec = adoCnn.Execute(strSQL)
Do While Not adoRec.EOF
tblName = adoRec.Fields("table_name").Value
If DCount("*", "MSysObjects", "[Name] = '" & "TO_" & tblName & "' AND [Type] = 1") > 0 Then
DoCmd.DeleteObject acTable, "TO_" & tblName
End If

DoCmd.TransferDatabase acimport, "ODBC", _
"ODBC;DSN=TEST_DSN;UID=TEST_USER;PWD=TEST_PASSWORD;", _
acTable, tblName, "TO_" & tblName, False
adoRec.MoveNext
Loop
adoCnn.Close
Set adoCnn = Nothing
Set adoRec = Nothing

End Sub

mougより参考、

MS AccessなどのVBAでシングルクォーテーション、ダブルクォーテーションの使い方を
説明している。↓

http://www.moug.net/tech/acvba/0050001.htm


抜粋
RunSQLメソッドの構文は次のとおりです。
<構文>

【例1】シングルクォーテーションを含める
Sub Sample1()
DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like '笹野*';"
End Sub

★「笹野」が変数の場合(変数:myName)
Sub Sample2()
Dim myName As String

myName = "笹野"

DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like '" & _
myName & "*';"

End Sub

【例2】ダブルクォーテーションを含める
   (2つの連続するダブルクォーテーションを使って、1つのダブル
    クォーテーションを表す。)
Sub Sample1()
DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like """ & _
"笹野*" & """" & ";"
End Sub

★「笹野」が変数の場合(変数:myName)
Sub Sample2()
Dim myName As String

myName = "笹野"

DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like """ & _
myName & "*""" & ";"

End Sub

【例3】クォーテーションマークを表す変数を含める
   (ダブルクォーテーションのANSI文字表記はChr$(34)です。)
Sub Sample1()
Dim strQuote As String

strQuote = Chr(34)

DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like " & _
strQuote & "笹野*" & strQuote & ";"
End Sub

★「笹野」が変数の場合(変数:myName)
Sub Sample2()
Dim myName As String
Dim strQuote As String

myName = "佐野"
strQuote = Chr(34)

DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like " & _
strQuote & myName & "*" & strQuote & ";"

End Sub

 数値はクォーテーションで囲む必要はありません。
【例】
Sub Sample1()
DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 顧客番号 = 1;"
End Sub

Sub Sample2()
Dim myNo As Integer

myNo = 2

DoCmd.RunSQL _
"SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 顧客番号 =" & myNo & ";"

End Sub