2017-01-28 9 views
0

ExcelスプレッドシートからOracleデータベースにデータを送信する必要があるプロジェクトがあります。ExcelからOracleへのエクスポート

私が使用しているコードですが、動作していません。strSQLステートメントの2番目の文字列ステートメントでエラーが発生しています。私はInsertまたはUpdateにExcelの範囲名をOracleデータベースに使用しようとしています。

Const hostName = "host" 
Const portNo = "port" 
Const srvSID = "SID" 
Const usrID = "username" 
Const usrPwd = "password" 

Sub ADOInsert() 
Dim cnAdo As ADODB.Connection 
Dim strConnString As String 
Dim strSQL As String 
Dim ws1 As Excel.Worksheet 
'set the worksheet: 
Set ws1 = ThisWorkbook.Worksheets("IMPDATA") 
Dim Imprange As Range 
Set Imprange = ws1.Range("a2:d6") 

    strDriver = "Driver={Microsoft ODBC for Oracle};" 
    strParams = "CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=" + hostName + ")(PORT=" + portNo + "))(CONNECT_DATA=(SID=" + srvSID + ")));" 
    strUser = "UID=" + usrID + ";PWD=" + usrPwd + ";" 

    strConnString = strDriver + strParams + strUser 


    Set cnAdo = New ADODB.Connection 
    cnAdo.Open strConnString 

    '/ this is hardcoded for number of rows and columns. 
    For lngRow = 1 To 10 
     strSQL = "Insert Into TESTDATA1"'/ 
     strSQL = strSQL & "'" & Range(Imprange, 1).Value & "', " '/ REQUEST_NUMBER 
     strSQL = strSQL & "'" & Range(Imprange, 2).Value & "', " '/ CID 
     strSQL = strSQL & "'" & Range(Imprange, 3).Value & "', " '/ SERVER_TYPE 
     strSQL = strSQL & "'" & Range(Imprange, 4).Value & "' " '/ COST 
     cnAdo.Execute strSQL 
    Next 
    cnAdo.Close 
    Set cnAdo = Nothing 
End Sub 
+4

ようこそ!私たちはあなたが得ているエラーを助けるためにここに来ています。私はオンラインで検索し、それに従うことをお勧めします。私たちはあなたが途中で遭遇するトラブルを手助けすることができます。この[質問チェックリスト](https://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)もパスしてください。質問がより価値ある回答と注意を得るのに役立ちます。 – ti7

答えて

2

行くための最も簡単な方法は、.csv形式にExcelファイルを変換することで、その後、あなたはあなた自身の制御ファイルを作成するSQLローダーを使用することができ、または他のあなたの.csvファイルを指す外部表を作成することができます。そうでなければ、.csvファイルをプログラムによって解析し、ODBC、JDBCなどを使用してテーブルの各行を読み込むことができます。

+0

要件はExcel経由で送信することです – hforte

関連する問題