macros将MS Word表格导出到Excel工作表

我有一个很多表格的文档。 有谁知道如何编写一个macros来将这些表导出到不同的Excel工作表?

答案取自: http : //www.mrexcel.com/forum/showthread.php?t=36875

以下是从Word中读取表格到Excel活动工作表的一些代码。 如果Word包含多个表,它会提示您input文档以及表号。

Sub ImportWordTable() Dim wdDoc As Object Dim wdFileName As Variant Dim TableNo As Integer 'table number in Word Dim iRow As Long 'row index in Excel Dim iCol As Integer 'column index in Excel wdFileName = Application.GetOpenFilename("Word files (*.doc),*.doc", , _ "Browse for file containing table to be imported") If wdFileName = False Then Exit Sub '(user cancelled import file browser) Set wdDoc = GetObject(wdFileName) 'open Word file With wdDoc TableNo = wdDoc.tables.Count If TableNo = 0 Then MsgBox "This document contains no tables", _ vbExclamation, "Import Word Table" ElseIf TableNo > 1 Then TableNo = InputBox("This Word document contains " & TableNo & " tables." & vbCrLf & _ "Enter table number of table to import", "Import Word Table", "1") End If With .tables(TableNo) 'copy cell contents from Word table cells to Excel cells For iRow = 1 To .Rows.Count For iCol = 1 To .Columns.Count Cells(iRow, iCol) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text) Next iCol Next iRow End With End With Set wdDoc = Nothing End Sub 

应将此macros插入到Excel(不是Word)中,并将其放入标准的macros模块中,而不是放入工作表或工作簿事件代码模块中。 为此,请转到VBA(Alt-TMV键盘),插入macros模块(Alt-IM),然后将代码粘贴到代码窗格中。 像其他人一样从Excel界面运行macros(Alt-TMM)。

如果您的文档包含很多表格,如果您的100多个页面表格实际上是每个页面上的单独表格,则可以轻松修改此代码以读取所有表格。 但现在我希望这是一个连续的表,不需要任何修改。


保持优异。

达蒙

VBAExpert Excel的咨询(我的另一种生活: http ://damonostrander.com)

喜欢它,这绝对是辉煌的,达蒙(即使花了我一年多的时间find…)。 这里是我最后的代码,除了循环遍历所有表(从所选表开始):

 Option Explicit Sub ImportWordTable() Dim wdDoc As Object Dim wdFileName As Variant Dim tableNo As Integer 'table number in Word Dim iRow As Long 'row index in Excel Dim iCol As Integer 'column index in Excel Dim resultRow As Long Dim tableStart As Integer Dim tableTot As Integer On Error Resume Next ActiveSheet.Range("A:AZ").ClearContents wdFileName = Application.GetOpenFilename("Word files (*.doc),*.doc", , _ "Browse for file containing table to be imported") If wdFileName = False Then Exit Sub '(user cancelled import file browser) Set wdDoc = GetObject(wdFileName) 'open Word file With wdDoc tableNo = wdDoc.tables.Count tableTot = wdDoc.tables.Count If tableNo = 0 Then MsgBox "This document contains no tables", _ vbExclamation, "Import Word Table" ElseIf tableNo > 1 Then tableNo = InputBox("This Word document contains " & tableNo & " tables." & vbCrLf & _ "Enter the table to start from", "Import Word Table", "1") End If resultRow = 4 For tableStart = 1 To tableTot With .tables(tableStart) 'copy cell contents from Word table cells to Excel cells For iRow = 1 To .Rows.Count For iCol = 1 To .Columns.Count Cells(resultRow, iCol) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text) Next iCol resultRow = resultRow + 1 Next iRow End With resultRow = resultRow + 1 Next tableStart End With End Sub 

下一个技巧:如何从Word中提取表格中的表格?我真的想要吗?

TC

这部分代码是循环遍历每个表并将其复制到excel的代码。 也许你可以创build一个工作表对象,它使用表号作为计数器来dynamic更新你所指的工作表。

 With .tables(TableNo) 'copy cell contents from Word table cells to Excel cells For iRow = 1 To .Rows.Count For iCol = 1 To .Columns.Count Cells(iRow, iCol) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text) Next iCol Next iRow End With End With