现在的位置: 首页 > 综合 > 正文

如何用SQL的UPDATE查询来快速更新EXCEL电子表格【转】

2013年09月29日 ⁄ 综合 ⁄ 共 1330字 ⁄ 字号 评论关闭

工作中处理EXCEL电子表格数据时,可能经常需要用工作薄的一个表的数据去更新另外一个表,手工处理是最笨的方法。下面演示的是VBA编写自定义函数,用SQL的方式,通过UPDATE查询,更新表格数据,大大改善效率。

Option Explicit

Dim ExcelDB As New ADODB.Connection
Dim rst1 As New ADODB.Recordset

Dim cn As New ADODB.Connection
Dim cmd As New ADODB.Command

 

' 调用这个过程来更新电子表
Sub UpdateTable()
  Dim wkBook As String
  wkBook = ThisWorkbook.FullName
  Dim sql As String
 
 
  If ExcelConnect(wkBook) Then

    '  更改SQL语句,就可以用几个表来更新一个表
    'sql = "UPDATE color_table SET color_name = 'red@' WHERE id_num = '123'"
    sql = "update [sheet2$] set 序号='0' "
    MsgBox sql
    If Not WQry(rst1, ExcelDB, sql) Then Exit Sub
  End If
End Sub

 

' 以数据库方式访问电子表格

Function ExcelConnect(dsnWkBook As String) As Boolean

  On Error GoTo ErrorHandler:  ' Enable error-handling routine.
  If ExcelDB.State = adStateOpen Then
    ExcelDB.Close
    Set ExcelDB = Nothing
  End If
  If Len(dsnWkBook) > 0 Then
    ExcelDB.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                 "Data Source=" & dsnWkBook & ";" & _
                 "Extended Properties=Excel 8.0;"
    ExcelConnect = True
  End If
  Exit Function       ' Exit to avoid handler.
ErrorHandler:    ' Error-handling routine.
  ExcelConnect = False
End Function

 

' 查询函数

Function WQry(gRST As ADODB.Recordset, xDB, qS As String) As Boolean

  If gRST.State = adStateOpen Then
    gRST.Close
  End If

  On Error GoTo ErrorHandler  ' Enable error-handling routine.

  gRST.Open qS, xDB

  WQry = True

  Exit Function     ' Exit to avoid handler.
ErrorHandler:    ' Error-handling routine.

  Err.Clear
  WQry = False
End Function

 

抱歉!评论已关闭.