2016-04-11 2 views
0

excel vbaでSQLを書くのが初めてで、vbaコードと同じブックにある特定の値を更新しようとしています。ただし、「操作で更新可能なクエリを使用する必要があります」と表示されるエラーが発生しました。誰かが私にこれを解決するのを助けてくれますか?以下は、私が書いたコードされています更新クエリがvbaコードと同じファイル内のデータベースでは機能しません

ます。Public Sub OperationOnCn()

Dim rs As Recordset 
Dim conn As Connection 
Dim strsql As String 
Dim strConn As String 

strFile = ThisWorkbook.FullName 
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _ 
& ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";" 


Set conn = CreateObject("ADODB.connection") 
Set rs = CreateObject("ADODB.recordset") 
wksInput.Range("A1").CurrentRegion.Name = "rngInput" 

conn.Open strCon 

strsql = "Update rngInput set Salary=10000 where Branch='Delhi'" 
rs.Open strsql, conn 

wksOutput.Range("A1:Q1000").ClearContents 

For i = 1 To rs.Fields.Count 

wksOutput.Range("A1").Offset(0, i - 1).Value = rs.Fields(i - 1).Name 

Next 

wksOutput.Range("A2").CopyFromRecordset rs 
rs.Close 
conn.Close 

End Subの

答えて

0

をなぜあなたはジェットの接続を使用している代わりにwksOutputにwksInputから直接書き込みますか?

F.e. Range.Copyを使用して - 方法?

その下に、wksInputからSELECTしてwksOuputに書きたいと思っていたようですが、strsqlはUPDATE-Statementです。それで、あなたがこれを実行するとき、ここで何が起こるべきですか?

+0

こんにちはOratom ..あなたの時間を取り出して応答してくれてありがとう。 range.copyを使用してデータを1つのシートから別のシートに配置することはできますが、SQLを使用する理由はExcelをSQLで使用する方法を学ぶことです。私がここでやろうとしているのは、レコードセットの給与列を更新し、それをwksOutputに貼り付けることです。私が不明な場合は教えてください。 –

+0

は、http://www.codeproject.com/Tips/705470/Read-and-Write-Excel-Documents-Using-OLEDBでご覧になれます。ここでは、OleDBを使用してExcelドキュメントを読み書きするための完全なサンプルを提供しています。 – oratom

関連する問題