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

时间:2015-07-17 18:50:08

标签: excel vba excel-vba ms-word

目前我正在尝试创建一个单词,在运行时它会查找一些"关键字"在文档中(基本上只是标题),复制这些关键字下面的段落&然后创建一个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文件中。

任务和时间范围

以下是任务/必要的时间范围。这也应该被复制&粘贴到Excel文件中。

1 个答案:

答案 0 :(得分:1)

解决方案:这对我有用:

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

(2)改变

ActiveSheet.Paste
ActiveWorkbook.Save

ObjWorksheet.Paste
ObjWorkBook.Save

否则,您的Word宏不知道您所指的Excel表格。

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

enter image description here

注意:我认为,在未来的道路上,您需要将Word文件中的句子放入Excel中的特定单元格,而不是A1,因为您的代码现在正在执行。为此,请在ObjWorksheet.Range("B2").Select之前添加ObjWorksheet.Paste(将单元格设置为所需的目标单元格)。