2010-11-28 25 views
1

J'ai une abstraction d'une table contenant un tableau de chaînes bidimensionnel dans Word VBA.Coller un tableau de chaînes VBA à 2 temps dans Word Table

Maintenant, je veux enregistrer ce tableau dans une table dans un document Word, sans itération à travers les deux dimensions ... afaik il y a une méthode pour obtenir un contenu Range (...) d'Excel comme tableau ...

par exemple:

Dim rng As Excel.Range 
Set rng = excelTabelle.Range("A4:F" + CStr(lastRow)) 
arrData = rng.Value 

est-il une solution similaire pour coller ceci dans une table Word? L'itération nécessite trop de temps pour l'exécution, donc je cherche un moyen plus efficace de le faire.

Greets, poeschlorn

+0

Je ne pense pas qu'il existe une méthode similaire dans Word (du moins, je ne la connais pas), mais peut-être pourriez-vous nous montrer votre solution itérative et pourquoi elle est trop lente, alors vous aurez probablement quelques astuces houe pour améliorer cela. –

Répondre

0

Une solution peut être d'utiliser le presse-papiers pour vos besoins. Ce n'est pas si facile que dans Excel, mais peut-être assez rapide pour vous. Voici quelques exemples de code comment obtenir un texte dans le presse-papiers dans une table de mot de 2x3 (ajouter une référence à Microsoft Forms 2.0 bibliothèque d'objets à votre doc VBA):

Dim oData As New DataObject 
Dim sText As String 

' Navigate to the top-left cell of your table (just an example) 
Selection.HomeKey Unit:=wdStory 

' Put text to the clipboard 
sText = "X1" & vbTab & "B1" & vbTab & "C1" & vbCrLf 
sText = sText & "A2" & vbTab & "B2" & vbTab & "C2" & vbCrLf 

On Error Resume Next 
oData.SetText sText 
oData.PutInClipboard 
On Error GoTo 0 

' Select the needed rows and columns of the table' 
Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend 
Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend 

' Paste the clipboard to the table ' 
Selection.Paste 

Je suggère que vous vous adaptez pour mettre un tableau bidimensionnel arbitraire dans une chaîne et le coller d'une manière similaire. Si vous avez besoin de plus d'aide, revenez nous donner plus de détails, s'il vous plaît.