本帖最后由 dongfgdwdjg 于 2018-1-21 15:38 编辑
习惯于用excel的代码,再用wordVBA代码,总觉得别扭,自己还是水平太低,不知道在word里怎么象在excel里一样设置一个按钮模块,一点击就可以运行代码,也觉得录制宏也不顺手。所以要批量操作word时,我喜欢在excel里代码操作,而在word通过录制宏获得的许多代码,在excel里运行时报错,这很让我苦恼,也总想办法解决。 创建这个帖子,我想把自己用excelVBA代码调整word的一些实例汇总起来,公开代码,给一些象我一样菜的人提供点儿借鉴和帮助,也做为自己的一个笔记用,以后要是还做了相关实例,也陆续上贴过来。 就应用excelVBA代码来说我都很菜,用excelVBA代码调整word水平就更低了,许多代码都是抄录前辈大师们的,我就是一个不太合格的搬运工;只是希望能给一些象我这样的人提供点什么。 开贴了,欢迎大家来拍砖、吐槽、批评、修改、优化、建议、交流、讨论,更欢迎有人鼓励、赞赏、献花;不主张在这儿求助,求助单独开贴效果更好,也不希望出现谩骂,我本好意,如有得罪纯属无心;如果代码侵犯了哪位的智力成果,请包涵一些。 附件是我用excelVBA代码调整word文件格式的一个实例。 先附上我所用的 遍历文件夹打开word文件的主代码
Sub 打开关闭word文件的主代码() t= Timer '把初始系统时间赋值给变量 Dim kg%, m%, i%, kongge%, konghang%, hanghao%, s%, arr, PathSht AsString, sh As Worksheet '声明变量 On Error Resume Next '容错语句,遇错继续 PathSht = ThisWorkbook.Path & IIf(Right(ThisWorkbook.Path, 1) ="\", "", "\") '取本文件所在文件夹(本文件的父文件夹?)为变量路径,如果路径最右边一个字符不是"\"则追加一个"\" s= 1 Dim FolderObj ' As Object '声明一个Object型的变量 Set wd = CreateObject("word.application") Set fso = CreateObject("scripting.filesystemobject") '创建文件系统对象(File SystemObject),可以是文件夹,磁盘,子文件夹 For Each FolderObj In fso.getfolder(PathSht).Files 'sf '在文件集合中的每个文件中循环 arr = Range("A5:CS5").Value '把第5 行要求格式数据赋值到数组arr If FolderObj.Name Like "*.doc*" And Not FolderObj.Name Like"*$*.doc*" Then '如果文件名称中包含指定内容,则 With wd.Documents.Open(mypath & FolderObj) '打开word文档 Application.StatusBar = "正在处理 "& "第" & s & "个文件: " & FolderObj.Name
.Close True End With End If s = s + 1 Next FolderObj Application.StatusBar = "" MsgBox "运行" & Format((Timer - t), "0.00000") & "秒" '以秒为单位,得到运行时间,对话框显示 End Sub
|