乔山办公网我们一直在努力
您的位置:乔山办公网 > word文档 > 用<em>vba</em>实现<em>word</em> 文件的批量&l

用<em>vba</em>实现<em>word</em> 文件的批量&l

作者:乔山办公网日期:

返回目录:word文档


不知道有没有理解错你的意思,你指的是所有打开的文档么?
ct = Application.Documents.Count '获取已打开的所有文档
for i=1 to ct '用循环遍历所有文档

Application.Documents(i). activate
----插入你的代码----
next

另外Selection.Find.Execute改成
Selection.Find.Execute Replace:=wdReplaceAll
是替换本文档所有的关键字
Selection.Find.Execute Replace:=wdReplaceOne
这个是仅替换一个关键字

do
findtxt = mysel.Find.Execute(Replace:=wdReplaceOne)
loop while findtxt

这个循环是遍历本文档所有内容,逐一替换,如果未找到则退出

Sub 批量对Word操作()
' A.公共部分的代码
Application.ScreenUpdating = False '冻结屏幕,以防屏幕抖动,这句好像没作用,窗口仍然会颤抖
Dim mydialog As FileDialog, GetStr(1 To 1000) As String '1000是工作时的文档上限数,可因需修改,不知没有限制的命令怎样写?
On Error Resume Next
Set mydialog = Application.FileDialog(msoFileDialogFilePicker)
With mydialog
.Title = "请选择要处理的文档(可多选)"
.Filters.Clear '过滤掉筛选器中的所有文件类型,然后现在下面用filters.add加上word类型
.Filters.Add "所有WORD文件", "*.doc", 1
.AllowMultiSelect = True 'true表示允许多选,如果需要单选,请用false
i = 1
If .Show = -1 Then
For Each stiSelectedItem In .SelectedItems
GetStr(i) = stiSelectedItem
i = i + 1
Next
i = i - 1
End If
Application.ScreenUpdating = False
For j = 1 To i Step 1
Set Doc = Documents.Open(FileName:=GetStr(j), Visible:=True)
Windows(GetStr(j)).Activate
' B可以替换的宏e799bee5baa6e79fa5e98193e59b9ee7ad94334
' 以下是处理格式所录制的宏,可根据所需录制
Application.Run MacroName:="单个文件默认打印" '运行名为"单个文件默认打印"的宏,宏命令见后面
' 以上可以换成是你自己录制的宏,
'其中Application.Run MacroName:="单个文件默认打印"'运行名为"单个文件默认打印"的宏,根据需要录制,自行命名

' C公共部分的代码
ActiveDocument.Save '保存
ActiveWindow.Close '退出
Next
Application.ScreenUpdating = True
End With
MsgBox "操作完成,请查看!!", 64, "提示"
'Application.Quit '关闭并退出Word
End Sub

Sub 单个文件默认打印()
'
' 下面是按默认的打印录制的宏,你可以自己录制。
'
'
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0
End Sub
使用Find方法,看看是不是快了。
'样式e69da5e887aae799bee5baa6363、符合样式的当前段文本
Dim wdSty$, strTxt$
wdSty = "标题 1"
With Selection
.HomeKey unit:=wdStory, Extend:=wdMove'光标移到文档首
.Find.ClearFormatting
.Find.Style = ActiveDocument.Styles(wdSty)'设置查找文本的样式为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

不需要循环,直接设置份数:
Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= wdPrintDocumentContent, Copies:=60, Pages:=Format(3*i) & "," & Format(3*i-1), PageType:=wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0,PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0

相关阅读

  • 用<em>vba</em>实现<em>word</em> 文件的批量&l

  • 乔山办公网word文档
  • 不知道有没百有理解错你的意思,你指的是所有打开的文档度么?ct = Application.Documents.Count 获取已打开的所有问文档答for i=1 to ct 用循环遍历所有文档 Application.Documents(i). activate -
  • <em>word</em> <em>VBA</em> <em>

  • 乔山办公网word文档
  • < 标识单词开始,也就是说这里要匹配一个整词,前面要么是空格,要么是标点符号等。(Subject) 匹配“Subject”这个单词。用圆括号括起来的是让它成组,同时本来也可以在替
  • <em>VBA</em> 用<em>excel</em>模块复制<

  • 乔山办公网excel表格制作
  • 可以完成。但要说如何完成,那就不是几句话能说清了。vba如何将excel表格的指定内容复制到word相应..." src="/uploads/tu/371.jpg" style="width: 400px; height: 267px;" />Sub abc()Dim App, WrdDoc, My
  • 用<em>vba</em>实现,在同一个<em>Word</em>文件中

  • 乔山办公网word文档
  • 1、打开word文档,这个文档有4页。2、想将来光标迅速移动到第3页,自可以点击开始,替换。百3、弹出对话框,点击定位度。4、弹出对话框,点击定位目标内容“页”问,右边输入页号
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网