|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
xuersweety 发表于 2012-1-10 21:56
那需要在哪里加上NN在第几行呀?
你的代码我看不懂,能不能加注释呀?
注释如下:
Sub Macro1() '引用Microsoft ActiveX Data Objects 2.x Library
Dim cnn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim SQL$, arr, i&, j&, lr&, lc%, s$, t$
arr = [a1].CurrentRegion '数据区写入数组
lr = UBound(arr) '行数
lc = UBound(arr, 2) '列数
' t = "[Feuil1$" & [a3].Resize(60000, lc).Address(0, 0) & "]"
t = "[Feuil1$" & [a3].Resize(2, lc).Address(0, 0) & "]" '这里是数据区,不含标题
cnn.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=no';data source=" & ThisWorkbook.Path & "\write.xlsx" '连接数据库
For i = 3 To lr逐行
SQL = "select * from " & t & " where f1='" & arr(i, 1) & " '" '查看第一列中是否有F1、F2、F3的SQL语句
Set rs = New ADODB.Recordset
rs.Open SQL, cnn, 1, 3 '打开查询
If rs.RecordCount Then '如果该F存在,则更新该行数据
s = ""
For j = 2 To lc
s = s & "f" & j & "=" & arr(i, j) & " ,"
Next
SQL = "update " & t & " set " & Left(s, Len(s) - 1) & " where f1='" & arr(i, 1) & " '" '更新数据SQL语句
cnn.Execute SQL '执行更新
End If
Next
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub
下面附件确定区域为2行(NN表),列数等于主工作簿数据区列数 t = "[Feuil1$" & [a3].Resize(2, lc).Address(0, 0) & "]" ,必须事先知道(如果需要更新MM表,要再来一次,定义数据区从第8行开始,也是2行)
files2.rar
(27.88 KB, 下载次数: 120)
|
|