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 =""即可。
上述代码的其他用法:翻译词组的批量替换,亲测效果还可以。
相关文章推荐
- Spring整理系列(10)——@Autowired自动装配、结合@Qualifier过滤及与JSR-250@Resource注解、JSR-330@Inject注解的区别、@Named使用
- C# 替换Word文本—— 用文档、图片、表格替换
- 【一步一步学习VBA】WORD 中创建表格并插入文本
- 用Excel的VBA实现文本匹配与替换
- Jacob替换word中指定文本
- Word表格自动填充(简单序号的填充,复杂序号的填充,相同文本的填充)
- 【office 2010】word排版之长英文单词自动换行和英文对齐问题
- (VBA)Word中对选中的行(代码行)自动编号并修改注释的颜色
- Excel用vba自动生成word
- 事件驱动自动生成静态页面模板解决方法(三)——文本内容替换
- 浏览器文本自动换行word-break
- word之八大文本替换技巧
- asp 使用正则表达式替换word中的标签,转为纯文本
- poi操作word文档,以07版本为参考,将word文档中图片替换为文本(替换文本也一样),读图片可选文字内容
- word 论文排版 —— 按指定格式章节的自动编号
- C#操作word之文本替换
- C#操作word之文本批量替换
- word排版之长英文单词自动换行
- 嵌入式 VIM自动排版和替换以及选中一列
- C#操作office之word文本替换,只能实现替换其中一个,可以替换超长文本