2009-05-12 6 views
0

Donc, j'avais besoin de prendre des données dans les tables MS Word, et de les manipuler dans Excel. J'ai décidé de l'obtenir de Word à Excel via un sous-programme VBA pour "gagner du temps". Mon document de mot source contenait des tables twentysomething.Création de tables pour la copie de Word vers Excel

J'ai pris mes tables de document source, extrait mes données et fait un nouveau document, avec une nouvelle table, seulement besoin de moi pour le copier et le coller dans Excel.

Cependant, alors que la table finale avant la copie semble bien dans le mot. Quand je le copie pour exceler, il casse les cellules qui contiennent des paragraphes entiers dans des cellules séparées. Comme la plupart des peeps excel le savent, même si une solution ressemble à Excel, faire une fusion et un centre - cela ne conserve que le contenu dans la cellule supérieure de la sélection! Donc, tout conseil, soit sur une meilleure fusion et un meilleur centre, soit sur un meilleur "gain de temps", serait génial.

Voici un échantillon du code à ce jour:

Sub First() 

Dim tableLength, tableIndex 
tableLength = ThisDocument.Tables.Count 

Dim tblReport As Table 
Dim docReport As Document 

Set docReport = Documents.Add 
Set tblReport = docReport.Tables.Add(Selection.Range, 1, 2) 

With tblReport 

Dim fieldOne, subvalueAription, subvalueA, subvalueB, subvalueC 

For tableIndex = 1 To tableLength 

    fieldOne = ThisDocument.Tables(tableIndex).Rows(2).Cells(2).Range.Text 
    subvalueA = Trim(ThisDocument.Tables(tableIndex).Rows(4).Cells(2).Range.Text) 
    subvalueB = "A: " & Trim(ThisDocument.Tables(tableIndex).Rows(5).Cells(2).Range.Text) 
    subvalueC = "B: " & Trim(ThisDocument.Tables(tableIndex).Rows(6).Cells(2).Range.Text) 
    subvalueAription = subvalueA & subvalueB & subvalueC & "C: " 

    Dim rowNext As row 
    Set rowNext = .Rows.Add 
    rowNext.Cells(1).Range.Text = fieldOne 
    rowNext.Cells(2).Range.Text = subvalueA & subvalueB & subvalueC 


Next 

End With 


End Sub 
+0

Donc je l'ai contourner, en faisant la création de la table réelle dans Excel. À la votre! – Irwin

Répondre

0

Excel utilise une terminaison de ligne différente de celle de Word. Pour éviter que le texte de la table Word ne soit réparti sur plusieurs cellules Excel, vous devez gérer vous-même la conversion du terminateur de ligne.

'Word > Excel 
newText = Replace(wordText, vbCrLf, vbLf) 

Je poste ceci par la mémoire, mais c'est la racine de ce problème.

Questions connexes