【问题标题】:Automate Word document into excel将 Word 文档自动转换为 excel
【发布时间】:2017-12-05 16:54:24
【问题描述】:

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

日期:日/月/年

员工姓名:姓名

一个段落中有几行文字。

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

【问题讨论】:

  • 确定您的意思是 VB.NET 而不是 VBA 或 VBA 变体?
  • 对不起,VBA 是我的意思。
  • 查看类似的帖子:Exporting Outlook to Excel

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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 2022-10-25
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多