您的位置:首页 > 数据库

VBA word自动排版(10)-结合SQL数据库批量替换WORD文本

2019-03-07 23:37 239 查看

笔者的使用环境是SQL-SERVER2014 和VS2017

首先在SQL-server中建立如下表格
序号 列名1 列名2
001 aa bb
002 bb cc
003 cc aa

以下是word中的VBA代码:
'——————————————————————————————声明公共变量

Public rs As New ADODB.Recordset
Public cnn As New ADODB.Connection
Public SQL As String

Sub test()

Dim arr_ori()
Dim arr_rep()
'——————————————————————————————打开数据库
rs.open("Provider=SQLOLEDB;server=服务器名称;Persist Security Info=True;User ID=用户名;Password=密码;Initial Catalog=数据库")
'——————————————————————————————读取数据库并为数组1赋值
SQL = "SELECT 列名1 FROM 表名 "
Set rs = cnn.Execute(SQL)
arr_ori() = rs.GetRows
'——————————————————————————————读取数据库并为数组2赋值
SQL = "SELECT 列名2 FROM 表名"
Set rs = cnn.Execute(SQL)
arr_rep() = rs.GetRows
'——————————————————————————————将数组1的内容替换为数组2
For i = 1 To UBound(arr_ori, 2)
With Selection.find
.text = Trim(arr_ori(0, i))
.Replacement.text = Trim(arr_rep(0, i))
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.find.Execute Replace:=wdReplaceAll
Next i

rs.close

End Sub

注:由于getrows获取的数组为二维数组,因此在使用时,应当注意维度设置,否则会报错。如果需要批量删除数组1的内容,则 .Replacement.text = Trim(arr_rep(0, i))改为 .Replacement.text =""即可。

上述代码的其他用法:翻译词组的批量替换,亲测效果还可以。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: