㈠ 怎么是用VBA批量提取word文档指定内容到Excel
Sub abc()
Dim App, WrdDoc, MyPath, MyFile, BM, Str
Mypath = "文件实际路径\*.doc" '请修改实际储存路径!
Set App = CreateObject("Word.Application") '用Set关键字创建Word应用成序对象!
MyFile = Dir(Mypath) ' 获得第一个WORD文档
do while MyFile <> "" ' 遍历Mypath下面的所有WORD文档
App.Visible = True
Set WrdDoc = App.Documents.Open(MyFile) '打开这个Word文件!
for each BM in WrdDoc.Bookmarks ' 遍历文档中的所有书签
Str = BM.Range ' 读取书签内容
next BM
WrdDoc.Close ' 关闭文件
MyFile = Dir ' 下一个WORD文档
Loop
Set App = Nothing
End Sub
㈡ 如何用VBA取得Word文档中的标题前面的序号
Sub test()
Dim myRange As Range
Dim num as String, title as String
'Set ps = Selection.Bookmarks("\headinglevel").Range.Paragraphs
Set ps = ActiveDocument.Bookmarks("\headinglevel").Range.Paragraphs
For Each p In ps
Set myRange = p.Range
num = myRange.ListFormat.ListString
title = myRange.Text
MsgBox "编号:" & num & vbCrLf & "标题内容:" & title
Next p
'Set myRange = Selection.Bookmarks("\headinglevel").Range.Paragraphs(1).Range
'MsgBox "编号:" & myRange.ListFormat.ListString & vbCrLf & "标题内容:" & myRange.Text
End Sub
另外附上一段把标题(Heading)序号取出并附加在标题内容后面的代码:
Sub ReplaceHeadingContent()
Dim myRange As Word.Range
Dim num As String, content As String
'取得所有书签
Set ps = ActiveDocument.Bookmarks("\headinglevel").Range.Paragraphs
'对书签中每一个段落进行处理
For Each p In ps
Set myRange = p.Range
With myRange
'把Range结束范围往前移一个字符,目的是为了不包括换行符
.MoveEnd Unit:=wdWord, Count:=-1
'取出段落序号
num = Trim(.ListFormat.ListString)
'取出Heading的内容
content = Trim(.Text)
'如果段落序号不为空,则把段落序号取出附加的标题内容后面
If Trim(num) <> "" Then
If num = "1.1.1.1.1." Or num = "1.1.1.1.1" Then
MsgBox "到目标点了。"
End If
If Right(num, 1) = "." Then num = Left(num, Len(num) - 1) '不需段落序号最后面的“.”
.Text = content & "<" & num & ">"
End If
'MsgBox "编号:" & num & vbCrLf & "标题内容:" & content
End With
Next p
End Sub
㈢ 如何利用VBA代码或者脚本代码批量修改word文档的正文标题
操作步骤。
第一,首先将需要批量替换的多个Word文档放在同一文件夹下面。
第二,新建一空白Word文档,右击空白工具栏,单击“控件工具箱”,就可以看到屏幕上调出的控件工具箱。
第三,在控件工具箱上单击“命令按钮”,文档中就放置了一个按钮了。
第四,双击该按钮,进入VB代码编写模式,将以下代码复制进去。
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim myPas As String, myPath As String, i As Integer, myDoc As Document
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "选择目标文件夹"
If .Show = -1 Then
myPath = .SelectedItems(1)
Else
Exit Sub
End If
End With
myPas = 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 If
End With
Application.ScreenUpdating = True
End Sub
第五,保存上面代码,退出VB编辑模式,返回Word文档界面。
第六,单击选中该按钮,再单击控件工具箱的第一个按钮“退出设计模式”。
第七,进行测试:点击按钮,选择要放置多个WORD文档所在的文件夹,确定后即可完成!注意如果WORD文档没有加密的话,密码项就不填,直接确认。就会发现该文件夹下面的所有WORD文档中“大家好”已被替换为“你好”了。
㈣ VBA怎样实现 批量选择word文档读取其文件名并填表 的功能
SubTest()
Dimf,n,x,wb,fName
OnErrorResumeNext
Cells.Clear
'打开文件(可多选)
f=Application.GetOpenFilename("Word文件,*.docm,",1,"选择文件",MultiSelect:=True)
'遍历每个选择的文件
Forx=1ToUBound(f)
sFile=f(x)
'取文件名,并赋值给单元格
n=Len(sFile)-InStrRev(sFile,"")
fName=Right(sFile,n)
Cells(x,1)=Left(fName,InStr(fName,"")-1)'取1到空格前的字符
'Cells(x,1)=Left(fname,9)'取文件名的前9个字符
Cells(x,2)=Mid(fName,InStr(fName,"")+1,Len(fName)-InStr(fName,".")+1)'取空格后到点之前的字符
'Cells(x,2)=Mid(fName,10,Len(fName)-InStr(fName,".")+1)'从10开始取到点之前的字符
Nextx
EndSub
㈤ 怎样大量提取word的标题
具体操作步骤如下。
1、首先在word的页面,输入几个标题。如下图所示。
㈥ (VBA)怎么提取Word中指定级 标题中正文内容
在word工具栏中找到“式样”(就在)“字体”的旁边,选择“清除格式”所有标题就都没了。就可以随便提取了。
㈦ vba处理word获取各级标题及内容
两种可行的思路:
1、利用正则表达式提取;
2、利用VBA编程提取
㈧ VBA如何遍历WORD文档中的某一级标题
使用Find方法,看看是不是快了。
'样式、符合样式的当前段文本
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
㈨ 一个word的VBA中如何批量读取一个文件夹里面的word文件中的字段
我理解你说的字段应该是文件中一个表格中的某一个单元格
具体逻辑是这样的
1、用scripting.filesystemobject 对象打开一个文件夹,遍历其中的所有WORD文件
2、打开WORD文件,读取文件中table(i) 对象的一个具体的单元格
完了。至于上面 i 的值及读取单元格的地址,要看你具体的文件
㈩ 如何利用VBA批量提取文件夹下所有Word文档的标题和指定段落
Sub test()
Dim fso, fp, arr, wd, f, n%, fname$
Set fso = CreateObject("scripting.filesystemobject")
Set fp = fso.getfolder(ThisWorkbook.Path)
ReDim arr(1 To fp.Files.Count, 1 To 2)
arr(1, 1) = "文件号": arr(1, 2) = "标题"
Set wd = CreateObject("word.application")
n = 1
For Each f In fp.Files
If Right(f, 3) = "doc" Or Right(f, 4) = "docx" Then
n = n + 1: arr(n, 1) = fso.getbasename(f)
fname = fso.getfilename(f)
With wd.Documents.Open(ThisWorkbook.Path & "\" & fname, True, True)
wd.Visible = True
arr(n, 2) = .Paragraphs(2).Range
.Close
End With
End If
Next
wd.Quit
Sheets(1).[a1].Resize(UBound(arr), UBound(arr, 2)) = arr
End Sub
现在有一个文件夹下有N个Word文件,要将他们的文件名和文档内的第二段提取到Excel表格,如何通过VBA实现