使用VBA在Word中将表转置到位

时间:2010-10-04 16:22:31

标签: excel vba ms-word

我正在尝试使用Visual Basic和Excel对象模型编写一个在Word中转置表的方法。但是,我在复制Word对象时使用paste special有困难,因为它不仅仅是纯文本。

是否可以强制使用转置的纯文本粘贴?有更好的方法吗?

我目前的代码如下:

Public Sub transposeTable()

Selection.Copy
Dim oXlApp As New Excel.Application
Dim oXlBook As Excel.Workbook
Set oXlApp = CreateObject(Class:="Excel.Application")
Set oXlBook = oXlApp.Workbooks.Add
oXlBook.Sheets(1).Range("A1").Select
oXlApp.ActiveCell.PasteSpecial Transpose:=True
oXlBook.Sheets(1).Cells.SpecialCells(xlCellTypeConstants).Select
oXlApp.Selection.Copy
Selection.Paste
End Sub

我收到的错误是:

Run-time error '1004':
PasteSpecial method of Range class failed

2 个答案:

答案 0 :(得分:1)

您是否尝试过没有格式化的粘贴?

oXlApp.ActiveCell.PasteSpecial Paste:=xlPasteValues, Transpose:=True

答案 1 :(得分:1)

我已经设法使用中间粘贴步骤使其正常工作。

Public Sub transposeTable()

Selection.Cut
Dim oXlApp As New Excel.Application
Dim oXlBook As Excel.Workbook
Set oXlApp = CreateObject(Class:="Excel.Application")
Set oXlBook = oXlApp.Workbooks.Add
oXlBook.Sheets(1).Range("A1").Select
oXlApp.ActiveSheet.Paste
oXlBook.Sheets(1).Cells.SpecialCells(xlCellTypeConstants).Select
oXlApp.Selection.Copy
oXlBook.Sheets(2).Select
oXlBook.Sheets(2).Range("A1").Select
oXlApp.ActiveCell.PasteSpecial Transpose:=True
oXlBook.Sheets(2).Cells.SpecialCells(xlCellTypeConstants).Select
oXlApp.Selection.Copy
Selection.Paste
oXlBook.Close (False)
oXlApp.Quit
End Sub