VBA中selection对象的使用,如何把selection定位到需要的文档

weixin_39969131 2018-10-16 03:32:19
源码如下,我希望采用selection对WrdDoc1这个文档进行搜索,获得所有样式为"标题 1"的内容。但是在运行时会定位到我手动打开的另外的word文档进行搜索,哪位大侠指正下我哪里错了?



===========================================================
Private Sub CommandButton1_Click()
Set myApp = CreateObject("Word.Application") '用Set关键字创建Word应用成序对象!
myApp.Visible = True

Mypath = ThisDocument.Path & "\" & CONST_FILENAME_1
Set WrdDoc1 = myApp.Documents.Open(Mypath) '打开这个Word文件!

'激活当前要搜索的文档
WrdDoc1.Activate

Dim wdSty$, strTxt$
wdSty = "标题 1"
'设置搜索参数
With Selection
.HomeKey unit:=wdStory, Extend:=wdMove '光标移到文档首
.Find.ClearFormatting
.Find.Style = ActiveDocument.Styles(wdSty) '设置查找文本的样式为“标题 1”
End With

'循环搜索文档里所有为“标题 1”样式的段落,
Do While Selection.Find.Execute(findtext:="*^13", MatchWildcards:=True, Format:=True)
strTxt = Selection.Text '获取符合样式的文本
'.......在这里录入处理代码

Selection.Move unit:=wdWord, Count:=1
If Selection.MoveRight <> 1 Then '文档尾退出
Exit Do
Else
Selection.MoveLeft
End If
Loop

End Sub
...全文
1716 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2018-10-16
  • 打赏
  • 举报
回复
我觉得,把你的代码中 Selection 都改成 WrdDoc1.Selection
应该就可以限制在你“指定”的那个文档中了吧。

谈到宏,很多人想到的是宏病毒,其实如果有正版杀毒软件,打开了实时防护,设置好宏安全性,可以利用宏来完成许多办公自动化功能。   打开word软件,从文件主菜单“工具”->“宏”->“安全性”,设置安全性为,这样就可以选择执行宏。安装office的时候,应该定制安装,在“office 工具”里选上“Visual Basic帮助”,这样就能获得非常完善的关于VBA编程环境、VBA语言参考、VBA对象等的帮助文档。从“工具”->“宏”->“Visual Basic 编辑器”可以打开VBA编程环境——“Microsoft Visual Basic”。在编程环境打开“帮助”->“Microsoft Visual Basic帮助”,就可以看到帮助了。   很多人觉得学习Visual Basic没有用,事实上,Visual Basic系列的编程语言包括VB、VBA、VBScript等,可以写网页、办公自动化编程、应用编程。在一些其他公司的应用软件也是可以用VBA的,例如Corel Draw。这里举几个例子来说明VBA使用。   如果有数十个文档需要合并为一个文档,逐个打开、拷贝是件麻烦事,可以用宏来完成。 例一:合并文档。新建一个窗体,窗体上放一个按钮。工具箱可以从“视图”->“工具箱”打开。 '按钮事件 Private Sub CommandButton1_Click() Dim sPath As String 'sPath用来保存路径 Dim tem As String '间变量 Set newDoc = Documents.Add '用Documents.Add增加一个新文档 With newDoc .SaveAs FileName:="D:/txtal.doc" '新文档保存的完整路径 End With ActiveDocument.close '关闭新建的文档 With Dialogs(wdDialogFileFind) '设置文本查找对话框 .SortBy = 2 '文件按名称排列 .SearchName = "*.txt" '只列出文本文件 .Update '更新 End With If Dialogs(wdDialogFileFind).Show = -1 Then '如果按下打开,就执行 sPath = Dialogs(wdDialogFileFind).SearchPath '将查找对话框打开的路径附值给SPath Dialogs(wdDialogFileFind).Execute Else Exit Sub '如果取消或者关闭,就退出 End If With Application.FileSearch '设置应用程序的查找 .NewSearch '新查找 .LookIn = sPath '将新查找的路径设置为文件对话框的路径(sPath) .SearchSubFolders = True '查找子目录 .FileType = msoFileTypeAllFiles '查找所有文件类型,这里可以设置其他类型,具体见FileSearch对象的FileType属性 .FileName = "*.txt" '查找后缀为txt的文件 .Execute '执行文件查找 Documents.Open ("D:/txtal.doc") '打开"D:/txtal.doc" Set Range2 = ActiveDocument.Content '设置Range2对象为活动文档的内容 For i = 1 To .FoundFiles.Count '把找到的文件打开,拷贝文件内容,加到新建的D:/txtal.doc文件 Documents.Open (.FoundFiles(i)) '打开第i个找到的文件 ActiveDocument.Content.Select '全选活动文件的内容 Selection.Copy '拷贝选的内容 ActiveDocument.Close '关闭活动文档 Range2.Collapse Direction:=wdColla

2,461

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧