2010-10-04 3 views
1

J'essaie d'écrire une méthode pour transposer des tables dans Word à l'aide de Visual Basic et du modèle d'objet Excel. Cependant, j'ai du mal à utiliser paste special avec l'objet Word copié, car ce n'est pas seulement du texte brut.Transposition de tables en place dans Word à l'aide de VBA

Est-il possible de forcer une pâte de texte brut avec transposer? Y a-t-il une meilleure manière de faire cela?

Mon code actuel est la suivante:

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 

L'erreur que je suis recieving est:

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

Répondre

1

J'ai réussi à le faire fonctionner maintenant, en utilisant une étape de pâte intermédiaire.

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 
+0

Pour référence future, vous devez ajouter une référence à 'Microsoft Excel Object Library' dans' Outils' -> 'Références ...' de la fenêtre de l'éditeur VB, sinon cela va générer des erreurs. – James

1

Avez-vous essayé de coller sans la mise en forme?

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

Merci, mais cela n'aide pas non plus. J'ai ajouté le message d'erreur que je reçois à la question. – James

Questions connexes