使用VBA将Word表格导入Excel并格式化的问题求助
Word表格导入Excel后格式化问题求助
我是VBA编程新手,正尝试将Word文档中的表格数据导入Excel。Word文档中的表格固定为5个,且每个表格的行列数也固定。我已成功完成数据导入,但下一步的导入数据格式化操作始终无法实现。
当前输出效果:
期望输出效果:
以下是我编写的代码:
Sub CommandButton1_Click() 'Declare variables Dim wdDoc As Object Dim wdFileName As Variant Dim tableNo As Integer Dim irow As Long Dim icolumn As Long row_number = 1 col_number = 1 'Open specific Word-document to import table wdFileName = Application.GetOpenFilename("Word File(*.docx), *.docx", , "Select Word File", , False) If wdFileName = False Then Exit Sub Set wdDoc = GetObject(wdFileName) With wdDoc 'Count the number of tables tableNo = .tables.Count If tableNo = 0 Then MsgBox "There are no tables in the specified Word Document. Please select the correct Word Document" Else 'Import of text/data in the tables from Word-document to specified range in Excel. Starts with table 1, then 2 and so on For i = 1 To 1 With .tables(i) For icolumn = 1 To .Rows.Count Application.Range("C6:D7").Cells(col_number, 1).Value = WorksheetFunction.Clean(.cell(icolumn, 1).Range.Text) Application.Range("C6:D7").Cells(col_number, 2).Value = WorksheetFunction.Clean(.cell(icolumn, 2).Range.Text) col_number = col_number + 1 row_number = row_number + 1 Next icolumn End With Next i For i = 2 To 2 With .tables(i) For icolumn = 1 To .Rows.Count Application.Range("C7:D8").Cells(col_number, 1).Value = WorksheetFunction.Clean(.cell(icolumn, 1).Range.Text) Application.Range("C7:D8").Cells(col_number, 2).Value = WorksheetFunction.Clean(.cell(icolumn, 2).Range.Text) col_number = col_number + 1 row_number = row_number + 1 Next icolumn End With Next i For i = 2 To 2 With .tables(i) For icolumn = 1 To .Rows.Count Application.Range("C8:D9").Cells(col_number, 1).Value = WorksheetFunction.Clean(.cell(icolumn, 3).Range.Text) Application.Range("C8:D9").Cells(col_number, 2).Value = WorksheetFunction.Clean(.cell(icolumn, 4).Range.Text) col_number = col_number + 1 row_number = row_number + 1 Next icolumn End With Next i For i = 3 To 3 With .tables(i) For icolumn = 1 To .Rows.Count Application.Range("C9:D10").Cells(col_number, 1).Value = WorksheetFunction.Clean(.cell(icolumn, 1).Range.Text) Application.Range("C9:D10").Cells(col_number, 2).Value = WorksheetFunction.Clean(.cell(icolumn, 2).Range.Text) Application.Range("C9:D10").Cells(col_number, 3).Value = WorksheetFunction.Clean(.cell(icolumn, 3).Range.Text) Application.Range("C9:D10").Cells(col_number, 4).Value = WorksheetFunction.Clean(.cell(icolumn, 4).Range.Text) Application.Range("C9:D10").Cells(col_number, 5).Value = WorksheetFunction.Clean(.cell(icolumn, 5).Range.Text) Application.Range("C9:D10").Cells(col_number, 6).Value = WorksheetFunction.Clean(.cell(icolumn, 6).Range.Text) Application.Range("C9:D10").Cells(col_number, 7).Value = WorksheetFunction.Clean(.cell(icolumn, 7).Range.Text) Application.Range("C9:D10").Cells(col_number, 8).Value = WorksheetFunction.Clean(.cell(icolumn, 8).Range.Text) col_number = col_number + 1 row_number = row_number + 1 Next icolumn End With Next i For i = 4 To 4 With .tables(i) For icolumn = 1 To .Rows.Count Application.Range("C10:D11").Cells(col_number, 1).Value = WorksheetFunction.Clean(.cell(icolumn, 1).Range.Text) Application.Range("C10:D11").Cells(col_number, 2).Value = WorksheetFunction.Clean(.cell(icolumn, 2).Range.Text) col_number = col_number + 1 row_number = row_number + 1 Next icolumn End With Next i For i = 5 To 5 With .tables(i) For icolumn = 1 To .Rows.Count Application.Range("C11:D12").Cells(col_number, 1).Value = WorksheetFunction.Clean(.cell(icolumn, 1).Range.Text) Application.Range("C11:D12").Cells(col_number, 2).Value = WorksheetFunction.Clean(.cell(icolumn, 2).Range.Text) col_number = col_number + 1 row_number = row_number + 1 Next icolumn End With Next i End If End With End Sub
希望能得到大家的帮助:)
内容的提问来源于stack exchange,提问作者zgk915
相关产品推荐
相关产品推荐

