从 VBA 中的 Word 文件创建 Excel 文件

Creating an Excel File from a Word File in VBA

目前我正在尝试在 word 中创建一个宏,当 运行 它在文档中查找一些 "keywords"(基本上只是标题)时,复制这些关键字下面的段落 &然后创建一个 Excel 文件并将它们粘贴到这个新文件中的单独单元格中,显然完成后保存文件。

目前我的代码如下:

Sub WordToExcel()

Dim ObjExcel As Object, ObjWorkBook As Object, ObjWorksheet As Object

Set ObjExcel = CreateObject("EXCEL.APPLICATION")
Set ObjWorkBook = ObjExcel.Workbooks.Open("C:\Users\john\Desktop\test.xlsx")
Set ObjWorksheet = ObjWorkBook.Worksheets("Sheet1")

With Selection.Find
    .ClearFormatting
    .Text = "Description"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
End With
Selection.Find.Execute
Selection.MoveDown Unit:=wdParagraph, Count:=1
Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend

Do Until Left(Selection.Text, Len(Selection.Text) - 1) = "Tasks and Timeframe"
    Ctr = Ctr + 1
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
Loop

Selection.Copy
ActiveSheet.Paste
ActiveWorkbook.Save

ObjWorkBook.Save
ObjWorkBook.Close
Set ObjWorksheet = Nothing
Set ObjWorkBook = Nothing
ObjExcel.Quit
Set ObjExcel = Nothing

End Sub

包含宏的word文档本质上就是:


描述

以下是本文档的一般说明。这应该被复制并粘贴到新的 excel 文件中。

任务和时间表

这是 tasks/the 必要的时间范围。这也应该复制并粘贴到 Excel 文件中。

解决方案:这对我有用:

(1) 去掉循环Do Until ....... Loop。之前的代码已经选择了你要复制的段落。

(2) 变化

ActiveSheet.Paste
ActiveWorkbook.Save

ObjWorksheet.Paste
ObjWorkBook.Save

否则,您的 Word 宏不知道您指的是哪个 Excel sheet。

结果: 这是 Excel 文件在 运行 宏之后的样子。

注意:我假设您以后会希望将 Word 文件中的句子放入 Excel 中的特定单元格,而不是 A1 正如您的代码现在所做的那样。为此,在 ObjWorksheet.Paste.

之前添加 ObjWorksheet.Range("B2").Select(将单元格设置为所需的目标单元格)