在VBA中从Word文件创buildExcel文件

目前我正在尝试在word中创build一个macros,它在文档中查找几个“关键字”(基本上只是标题),复制这些关键字下面的段落,然后创build一个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 

而macros包含的文档基本上只是:


描述

这里是这个文件的一般描述。 这应该复制并粘贴到新的Excel文件。

任务和时间表

这是任务/必要的时间表。 这也应该复制并粘贴到Excel文件中。

解决scheme:这对我有用:

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

(2)改变

 ActiveSheet.Paste ActiveWorkbook.Save 

 ObjWorksheet.Paste ObjWorkBook.Save 

否则,您的Wordmacros不知道您指的是哪个Excel工作表。

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

在这里输入图像描述

注意:我假定在这条路上,你会希望把Word文件中的句子放到Excel中的特定单元格中,而不是像你的代码现在所做的那样。 要做到这一点,请添加ObjWorksheet.Range("B2").SelectObjWorksheet.Paste之前ObjWorksheet.Range("B2").Select (将单元格设置为所需的目标单元格)。