word vba中 Selection.find 疑惑.
亲,代码如下,查找第一次出现“ABC”的所在页的页码。
请根据情况自行修订需要查找的字符:Sub cz()Dim MyRange As RangeSet MyRange = ActiveDocument.ContentMyRange.Find.Execute FindText:="ABC", Forward:=TrueMsgBox MyRange.Information(wdActiveEndPageNumber)End Sub
word 使用vba 怎么改一个内容?
操作步骤。
第一,首先将需要批量替换的多个Word文档放在同一文件夹下面。
第二,新建一空白Word文档,右击空白工具栏,单击“控件工具箱”,就可以看到屏幕上调出的控件工具箱。
第三,在控件工具箱上单击“命令按钮”,文档中就放置了一个按钮了。
第四,双击该按钮,进入VB代码编写模式,将以下代码复制进去。
Private Sub CommandButton1_Click()Application.ScreenUpdating = FalseDim myPas As String, myPath As String, i As Integer, myDoc As DocumentWith Application.FileDialog(msoFileDialogFolderPicker) .Title = "选择目标文件夹" If .Show = -1 Then myPath = .SelectedItems(1) Else Exit Sub End IfEnd WithmyPas = InputBox("请输入打开密码:")With Application.FileSearch .LookIn = myPath .FileType = msoFileTypeWordDocuments If .Execute > 0 Then For i = 1 To .FoundFiles.Count Set myDoc = Documents.Open(FileName:=.FoundFiles(i), Passworddocument:=myPas) Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "大家好" .Replacement.Text = "你好" .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll myDoc.Save myDoc.Close Set myDoc = Nothing Next End IfEnd WithApplication.ScreenUpdating = TrueEnd Sub 第五,保存上面代码,退出VB编辑模式,返回Word文档界面。
第六,单击选中该按钮,再单击控件工具箱的第一个按钮“退出设计模式”。
第七,进行测试:点击按钮,选择要放置多个WORD文档所在的文件夹,确定后即可完成!注意如果WORD文档没有加密的话,密码项就不填,直接确认。
就会发现该文件夹下面的所有WORD文档中“大家好”已被替换为“你好”了。
VBA修改word文档
开启模糊查询即可,再判断一下查找的长度Sub 分章()Set myrange = ActiveDocument.ContentFor n = 1 To 8myrange.Find.Execute findtext:="第*章", Forward:=True, MatchWildcards:=TrueIf myrange.End - myrange.Start < 20 Thenmyrange.Style = ActiveDocument.Styles("标题 2")End IfNextEnd Sub测试运行了下,效果有点不好,修改一下Sub 分章()Set myrange = ActiveDocument.ContentFor n = 1 To 8myrange.Find.Execute findtext:="第*章", Forward:=True, MatchWildcards:=TrueIf myrange.End - myrange.Start < 20 Thenmyrange.Style = ActiveDocument.Styles("标题 2")Elsemyrange.Start = myrange.Start + 1End IfNextEnd Sub
WORD VBA难题,求帮助。
<; 标识单词开始,也就是说这里要匹配一个整词,前面要么是空格,要么是标点符号等。
(Subject) 匹配“Subject”这个单词。
用圆括号括起来的是让它成组,同时本来也可以在替换内容中通过“\1”来指代它。
但是我看粘贴出来的代码里面替换内容为空,所以我觉得这个圆括号可有可无。
\\ 匹配“\”这个字符。
因为“\”本身在查找控制字符里面具有特殊的控制意义(转义),所以要匹配它自己就必须在前面再加一个“\”进行转义。
* 匹配0到任意多个任意字符([^11^13]){1} 匹配一个换段符(^13,在文档里面是直接键入ENTER得到)或者一个段内换行符(^11,在文档里面键入SHIFT+ENTER得到)。
方括号的意思是匹配方括号里面这个集合中的任意字符。
“{n}”表示匹配n次,所以“{1}”就是匹配1次了。
至于那个圆括号,和上面提到的圆括号的功能相同,同样我觉得这里使用是多余的。
整句话的意思,就是要找到形如“Subject\ajdslfjasdlf”文字,且它后面必须是一个换段或者段内换行。
__________________补充:楼主说的没错,^11^13在这里是可以理解成或者的关系。
请问楼主提到的需求中,title后面是不是一定会有一个回车?如果是这样的话,可以直接在Word查找替换对话框中用这个查找串: <Subject*\\<([!\\]@)[^11^13] ,替换为:\1 。
选中通配符后做全部替换即可。
应该是不需要VBA的吧?楼主可以先试试看,如果不行我再想办法。
___________________再补充:([!\\]@) 的意思就是匹配一个不包含“\”(这个由“[!\\]”来控制)的字符串,这个字符串由至少一个字符组成(这个由“@”来控制)。
所以,我的整个查找串的意思就是,查找一个“Subject”开头,后面有若干字符,最后一个反斜杆的后面有一个字符串,再往后就是一个回车。
当然,如果不想用通配符,当然自己写代码也是能做到了。
但是就得自己去分析整个字符串,会需要考虑很多因素和可能的变化,代码会写得很复杂。
此外,Word查找替换的通配符,是Word中很重要的一个功能,掌握它能够为平时的工作带来的很大便利。
所以还是值得去研究一下的。
其实我就是看Word自带的帮助啊……在Word里面键入F1,然后输入关键字“查找替换”,好象返回的第一条就是我看的那个帮助,里面有这些控制符号的解释。
不过Word的查找替换对于模糊查询的支持总的来说还是比较弱。
要想做到更精确、更复杂的搜索条件,还是需要用到正则表达式。
这个可以在网上搜索一下“VBA 正则表达式”。
[求解] :excel vba替换word文档的内容问题!谢谢!
展开全部答:可以更改循环替换这组代码:For i = 23 To 32 Step 1'替换cells(23,23)到cells(32,24)里面对应的内容WdApp.Selection.Find.Replacement.ClearFormattingWith WdApp.Selection.Find.ClearFormatting.Text = Sheets("明细").Cells(i, 23).Value.Replacement.ClearFormatting.Replacement.Text = Sheets("明细").Cells(i, 24).Value.Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinueEnd WithNext i为:For i = 23 To 32 Step 1Wd.Range.Find.Execute findtext:=Sheets("明细").Cells(i, 23).Value, MatchWildcards:=True, ReplaceWith:=Sheets("明细").Cells(i, 24).ValueNext i
WORD VBA: 查找字符并选择整个格子
这个应该完全满足要求了吧。
Sub TEST()Dim MyTable As Table, MyRng As CellFor Each MyTable In ThisDocument.TablesFor Each MyRng In MyTable.Range.CellsWith MyRng.Range.Find.Text = "RRDD-ST".ExecuteIf .Found ThenMyRng.Range.Style = ActiveDocument.Styles("引用")End IfEnd WithNext MyRngNext MyTableEnd Sub
如何利用excel vba提取word中表格的部分内容,复制粘贴到excel
试试下面的代码:Sub 宏1()Dim wordapp As ObjectDim mydocDim mypath$, myname$Dim wdRng As ObjectDim pos1%, pos2% '定义找到的字段的首位位置Application.DisplayAlerts = FalseSet wordapp = CreateObject("word.application")mypath = ThisWorkbook.Path & ""myname = Dir(mypath & "*.doc*")Set mydoc = wordapp.Documents.Open(mypath & myname)Set wdRng = mydoc.RangewdRng.Find.Execute ("(一)")pos1 = wdRng.StartSet wdRng = mydoc.RangewdRng.Find.Execute ("五、")pos2 = wdRng.Startmydoc.Range(pos1, pos2).Copy '选中找到的两个字段中间的内容mydoc.Close Falsewordapp.QuitWorksheets("Sheet2").SelectRange("A1").SelectActiveSheet.PasteApplication.ScreenUpdating = TrueApplication.DisplayAlerts = TrueEnd Sub
转载请注明出处51数据库 » vba word find
请叫我风儿哥