如何用VBA实现WORD批量替换?
For i = 1 To n 'n是listview1的行数Selection.Find.ClearFormattingSelection.Find.Replacement.ClearFormattingWith Selection.Find.Text = ListView1.ListItems(i).SubItems(0) 'Findstr=listview1的第i行第1列对应单元格的内容.Replacement.Text = ListView1.ListItems(i).SubItems(1) 'Findstr=listview1的第i行第2列对应单元格的内容.Forward = True.Wrap = wdFindContinue.Format = False.MatchCase = False.MatchWholeWord = False.MatchByte = True.MatchWildcards = False.MatchSoundsLike = False.MatchAllWordForms = FalseEnd WithSelection.Find.Execute Replace:=wdReplaceAllListView1.selectedItem = iNextMsgBox "处理完毕!", vbInformation + vbOKOnly, "消息"ListView1.selectedItem = 1
word vba问题 如何批量替换文件夹内所有的WORD文档内相同的词组...
Sub 批量修改()'On Error Resume NextDim FileOpenDim X As IntegerDim wb As WorkbookApplication.ScreenUpdating = FalseFileOpen = Application.GetOpenFilename(FileFilter:="Microsoft Excel文件(*.xls),*.xls", MultiSelect:=True, Title:="选择工作薄")X = 1While X <= UBound(FileOpen)Set wb = Workbooks.Open(FileOpen(X))wb.Sheets(1).[a1] = "456"wb.Sheets(1).[D4] = "王月"wb.Close TrueX = X + 1WendEnd Sub这个宏 会把 你选中的文件 批量替换 sheet1 :A1的内容 改为 456 D4 的内容改为 王月, 你可以根据你的实际情况修改代码就可以了, 如果单元格不固定就 用FIND 方法找到再修改
WORD、高手们、宏、VBA、宏有关批量运行
Sub 批量操作WORD() Dim path As String Dim FileName As String Dim worddoc As Document Dim MyDir As String MyDir = "G:\360data\重要数据\桌面\新建文件夹 (2)" '文件夹路径根据需要自己修改,需要处理的文件都放该文件夹内 FileName = Dir(MyDir & "\*.doc*", vbNormal) Do Until FileName = "" If FileName ThisDocument.Name Then Set worddoc = Documents.Open(MyDir & "\" & FileName) worddoc.Activate Call 处理WORD '调用宏,换成你自己宏的名字 worddoc.Close True FileName = Dir() End If LoopSet worddoc = NothingEnd Sub'======================下面的宏换成你自己的宏=================================Sub 处理WORD() ActiveDocument.Paragraphs(1).Range.Select Selection.Font.Size = 72End Sub
您好,请问下我在word中调用VBA批量替换多个文档内容为出现错误...
可以用编辑菜单中的替换命令,选全部替换就可以。
但是只能进行单文件的替换。
多文档替换相同的内容可以用其它工具进行。
如果表格中要替换的内容不一样,但是有规律,可以通过简单编程来解决。
另外还找到一个办法,使用替换工具,高级,加上字体格式以及和全字匹配。
如果数据或数据的更新是无规律的就只能是手工了。
VBA语言编程 用excel编程对多个word进行批量修改时,修改完第一...
注:vba偶并不太熟(偶一般是用c#和delphi的),VBA只是稍有了解,以下代码大部分是偶google到的内容拼出来的。
。
。
。
。
如下,使用时先更改test下的docpath和xlspath路径设定,docpath即你的word的目录,此目录包括子目录下的所有doc将被读取,xlspath即输出目录,需要存在在VBA窗口中,先在视图下显示立即窗口以观察进度,程序最后的输出类似这样正在读取[1]:->D:\1\Resume.doc正在生成:->d:\2\Resume正在读取[2]:->D:\1\简历(简).doc正在生成:->d:\2\简历(简)正在读取[3]:->D:\1\计数器说明.doc正在生成:->d:\2\计数器说明共耗时0分41秒Option ExplicitDim docpath As String, xlspath As String'ResultFlag=0 获取路径'ResultFlag=1 获取文件名'ResultFlag=2 获取扩展名Public Function SplitPath(FullPath As String, ResultFlag As Integer) As StringDim SplitPos As Integer, DotPos As IntegerSplitPos = InStrRev(FullPath, "\")DotPos = InStrRev(FullPath, ".")Select Case ResultFlag Case 0 SplitPath = Left(FullPath, SplitPos - 1) Case 1 If DotPos = 0 Then DotPos = Len(FullPath) + 1 SplitPath = Mid(FullPath, SplitPos + 1, DotPos - SplitPos - 1) Case 2 If DotPos = 0 Then DotPos = Len(FullPath) SplitPath = Mid(FullPath, DotPos + 1) Case Else Err.Raise vbObjectError + 1, "SplitPath Function", "Invalid Parameter!"End SelectEnd FunctionPublic Function FileFolderExists(ByVal strFullPath As String) As Boolean On Error GoTo EarlyExit If Not Dir(strFullPath, vbDirectory) = vbNullString Then FileFolderExists = TrueEarlyExit: On Error GoTo 0End FunctionSub Test() '使用双字典,旨在提高速度 Dim MyName, Dic, Did, I, T, F, TT, MyFileName, Doc, Ke Dim count As Integer count = 0 T = Timedocpath = "D:\1\"xlspath = "d:\2\" Set Dic = CreateObject("Scripting.Dictionary") '创建一个字典对象 Set Did = CreateObject("Scripting.Dictionary") Dic.Add (docpath), "" I = 0 Do While I "" If MyName "." And MyName ".." Then If (GetAttr(Ke(I) & MyName) And vbDirectory) = vbDirectory Then '如果是次级目录 Dic.Add (Ke(I) & MyName & "\"), "" '就往字典中添加这个次级目录名作为一个条目 End If End If MyName = Dir '继续遍历寻找 Loop I = I + 1 Loop 'Did.Add ("文件清单"), "" '以查找D盘下所有EXCEL文件为例 For Each Ke In Dic.keys MyFileName = Dir(Ke & "*.doc") Do While MyFileName "" Doc = Ke & MyFileName Did.Add (Doc), "" count = count + 1 Debug.Print "正在读取[" & count & "]:->" & Doc doc2xls (Doc) MyFileName = Dir Loop Next ' For Each Sh In ThisWorkbook.Worksheets ' If Sh.Name = "XLS文件清单" Then ' Sheets("XLS文件清单").Cells.Delete ' F = True ' Exit For ' Else ' F = False ' End If ' Next 'If Not F Then ' Sheets.Add.Name = "XLS文件清单" 'End If 'Sheets("XLS文件清单").[A1].Resize(Did.Count, 1) = WorksheetFunction.Transpose(Did.keys) TT = Time - T Debug.Print "共耗时" & Minute(TT) & "分" & Second(TT) & "秒"End SubSub doc2xls(filename As String)Dim xlApp As Object, xlSheet As Object, outfile As String, c As ObjectSet xlApp = CreateObject("Excel.Application")Set xlSheet = xlApp.Workbooks.Add.Sheets(1)Dim Wapp As Object, Doc As Object, GetDocText As Object 'Word Application 对象、Document 对象Set Wapp = CreateObject("Word.Application") '创建Word Application 对象Set Doc = Wapp.Documents.Open(filename, ReadOnly:=True) '打开文档,返回一个文档对象'xlSheet.Range("A1") = Doc.Content.TextDoc.Application.Selection.WholeStory ''''全选Doc.Application.Selection.Copy ''''''''''复制xlSheet.Range("A1").SelectxlSheet.Pasteoutfile = xlspath + Replace(SplitPath(filename, 1), ".doc", ".xls")Debug.Print "正在生成:->" & outfilexlSheet.Parent.SaveAs outfilexlApp.QuitSet xlSheet = NothingSet xlApp = NothingWapp.QuitSet Doc = NothingSet Wapp = NothingEnd Sub
Word 批量替换不同文字
用VBA来编程宏代码来实现是可以的,也不复杂。
需要宏代码的可以hi我。
如果需要工具软件,可试试这款:选择如图所示的批替换功能卡,选择处理的文件类型为doc,然后添加待处理的word文档,然后启用处理功能模块在查找中如果待查找的内容,可以启用通配符模式,或者正则模式,对应输入替换为的新内容,然后新增入列表中;有多少条就新增多少条。
注意:如果有些文字是处在文本框中的,如果也希望替换这些文字,就得勾选同时替换文本框中的数据;如果本机安装的是Office 2010版及以上的,如果处理失效的话,或者无法启用的话,可安装Office 2007/2003来处理。
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批量替换PPT内容,包括文本框和表格!求大佬帮忙
展开全部程序代码:Sub 宏1() Dim i, ctrl '下一行是查找和替换的内容,依次成对填写 ctrl = Array("A", "1", "B", "2", "C", "3") For i = LBound(ctrl) To UBound(ctrl) - 1 Step 2 Cells.Replace What:=ctrl(i), Replacement:=ctrl(i + 1), LookAt:=xlPart, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Next iEnd Sub...
转载请注明出处51数据库 » vba word批量替换
锁住爱恋