将Word文档自动化为excel

时间:2017-12-05 16:54:24

标签: excel vba text ms-word data-transfer

我必须将数百个word文档传输到excel中。这些文件是回溯的客户记录,它们看起来像这样:

日期:年/月/日

员工姓名:姓名

一个段落中有几行文字。

页面上会有数十个主题,格式化为一列。我需要最终结果为每个类别一列。这方面的主要挑战是文本描述。它们用单词格式化的方式似乎没有一种简单的方法可以将它们复制并粘贴到excel中,而结果是段落的每一行都不是一个单元格。我尝试过的任何替换软返回的硬返回的方法都会占用整个页面上的所有文本并放入一个单元格中,这会使情况变得更糟。我有数百个要传输的文件,所以我没有时间将每个笔记复制并粘贴到一个单元格中。尽管在音符开始/结束之前和之后通常存在空行,但段落的长度也不均匀。我敢肯定必须有一个VB解决方案,但我知识不足以弄明白。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以在Word中设置书签,并将所有书签导入Excel中的范围。

Sub TryThis()
Dim oWord As Word.Application
Dim oDoc As Word.document
Dim vBkMarks As Variant
Dim vRecord
Dim rRecord As Range
Dim nFields As Long
Dim i As Long

vBkMarks = Array("Bookmark1", "Bookmark2", "Bookmark3") 'etc...
ReDim vRecord(LBound(vBkMarks) To UBound(vBkMarks))
nFields = UBound(vBkMarks) - LBound(vBkMarks) + 1
On Error Resume Next
Set oWord = GetObject(, "Word.Application")
On Error GoTo 0
If oWord Is Nothing Then _
Set oWord = CreateObject("Word.Application")
Set oDoc = oWord.ActiveDocument
For i = LBound(vBkMarks) To UBound(vBkMarks)
vRecord(i) = oDoc.Bookmarks(vBkMarks(i)).Range.Text
Next i
With Sheets("DataTable")
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize( _
1, nFields).Value = vRecord
End With
End Sub