通过VBA将多个Word表格内容提取到Excel-表格内容编号行
我在几年前的一篇帖子中发现了一些可爱的代码,这些代码为我提供了要导出到Excel的特定表格、行和列信息,并且运行良好。(感谢原创海报) 然而,我现在被要求抓取另一个表格单元格,其中有几个段落,这些段落在单元格内(或者在另一个单元格中,用圆珠笔)自动编号为列表。我并不总是知道列表中有多少项,但我需要完整的单元格内容 我遇到的问题是,当数据通过编码导出到Excel时,它会松开编号,回车,基本上所有的数据都一起运行,不会中断前一行的数据 乙二醇-通过VBA将多个Word表格内容提取到Excel-表格内容编号行,vba,excel,ms-word,Vba,Excel,Ms Word,我在几年前的一篇帖子中发现了一些可爱的代码,这些代码为我提供了要导出到Excel的特定表格、行和列信息,并且运行良好。(感谢原创海报) 然而,我现在被要求抓取另一个表格单元格,其中有几个段落,这些段落在单元格内(或者在另一个单元格中,用圆珠笔)自动编号为列表。我并不总是知道列表中有多少项,但我需要完整的单元格内容 我遇到的问题是,当数据通过编码导出到Excel时,它会松开编号,回车,基本上所有的数据都一起运行,不会中断前一行的数据 乙二醇- P&ID 111222 图纸111-5456 文件51
P&ID 111222DWG 111-5456DOC512BC-1234 有谁能建议如何调整代码以阻止数据一起运行?我很乐意在一个Excel单元格中获取数据,如果必须的话,也可以在多个单元格中获取数据 提前谢谢你,温迪
Sub-wordscrap()
作为对象的Dim wrdDoc
将对象文件作为对象
作为对象的Dim fso
Dim wordApp作为对象
Dim sh1作为工作表
作为整数的Dim x
'将此更改为包含word文档的文件夹
FolderName=“Y:\120\TEST”
Set sh1=ThisWorkbook.Sheets(1)
设置fso=CreateObject(“Scripting.FileSystemObject”)
设置wordApp=CreateObject(“Word.application”)
设置objFiles=fso.GetFolder(FolderName).Files
x=1
对于OBJ4文件中的每个wd
如果InStr(wd,“.docx”)和InStr(wd,“~”)=0,则
设置wrdDoc=wordApp.Documents.Open(wd.Path,ReadOnly=True)
'word文档文件名
sh1.Cells(x,1)=wd.Name
'文件编号-表1第2行第1列
sh1.Cells(x,2)=Application.WorksheetFunction.Clean(wrdDoc.Tables(1).Cell(行=2,列=1).Range)
'文件标题-表1第3行第1列
sh1.Cells(x,3)=Application.WorksheetFunction.Clean(wrdDoc.Tables(1).Cell(行=3,列=1).Range)
'文档标记单元格-表1第9行第2列
'注意-如果WORD文档中的行数超过1行,并且自动编号在导出时将删除编号和换行符-将所有内容一起运行
sh1.Cells(x,4)=Application.WorksheetFunction.Clean(wrdDoc.Tables(1).Cell(行=9,列=2).Range)
'记录单据频率的单元格-表1第16行第2列
sh1.Cells(x,5)=Application.WorksheetFunction.Clean(wrdDoc.Tables(1).Cell(行=16,列=2).Range)
'sh1.单元格(x,3)=…更多提取的数据。。。。
x=x+1
警告,关闭
如果结束
下一个wd
wordApp,退出
End Sub
这将从Word表格单元格中提取常规文本或项目符号文本,格式设置为在Excel单元格中使用
如果word中的文本格式为列表,则会添加“项目符号”或数字(但请注意,如果单元格格式混合,则数字将关闭)
以下是您在当前Sub中对其的称呼:
sh1.Cells(x, 4) = CellContent( wrdDoc.Tables(1).Cell(9, 2) )
谢谢你,蒂姆。您的代码运行得非常好,完全符合我的需要。谢谢你的答复。温迪
sh1.Cells(x, 4) = CellContent( wrdDoc.Tables(1).Cell(9, 2) )