导航:首页 > 文件类型 > vba提取多个word文件的标题

vba提取多个word文件的标题

发布时间:2023-02-07 10:57:35

㈠ 怎么是用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实现

阅读全文

与vba提取多个word文件的标题相关的资料

热点内容
压缩完了文件去哪里找 浏览:380
武装突袭3浩方联机版本 浏览:674
网络机顶盒移动网络 浏览:391
iphone手机百度云怎么保存到qq 浏览:148
数据库设计与实践读后感 浏览:112
js对象是什么 浏览:744
网页文件存pdf 浏览:567
文件夹正装 浏览:279
刚复制的文件找不到怎么办 浏览:724
试运行适用于哪些体系文件 浏览:987
ghost文件复制很慢 浏览:967
杰德原车导航升级 浏览:240
编程dest是什么意思 浏览:935
linux端口镜像 浏览:820
iphone5屏幕清尘 浏览:157
机顶盒密码怎么改 浏览:672
w7系统下载32位教程 浏览:618
pcb文件包括哪些内容 浏览:598
g00文件 浏览:607
用bat程序删除程序 浏览:516

友情链接