J'essaie d'ajouter quelques images jpeg (jusqu'à 6) à partir d'une feuille de calcul Excel dans un tableau (document Word), mais une seule apparaît à la fin. Chaque fois que j'ajoute une image, elle passe par-dessus la précédente. Voici une partie de mon code avec le problème:

' Filling the table
For i = 1 To iNumChem
    ' Column 1
    wdTable.Rows(i + 1).Cells(1).Range.Text = Sheet1.Cells(a + 1 + 2 * i - 2, 5).Value
    ' Column 2
    wdTable.Rows(i + 1).Cells(2).Range.Text = Sheet1.Cells(a + 1 + 2 * i - 2, 31).Value
    ' Column 3
    For p = 0 To 5
        If Sheet1.Cells(a + 2 * i, 5 + 2 * p).Value <> 0 Then
            Sheet3.Shapes(Sheet1.Cells(a + 2 * i, 5 + 2 * p).Value).Copy
            wdTable.Rows(i + 1).Cells(3).Range.PasteSpecial
        End If
    Next p
    ' Column 4
Next i

J'ai essayé de travailler avec les propriétés ParagraphFormat et Move, mais cela n'a pas aidé. J'ai généralement du mal à déplacer "le curseur" à la bonne position pour pouvoir ajouter quelque chose, surtout dans ce cas avec des images (pas des formes) à ajouter côte à côte.

Toutes les idées / commentaires sont les bienvenus.

Remarque: édité après les commentaires car j'ai mélangé les termes forme et image! J'essaie de prendre des photos d'Excel et de les ajouter dans la même cellule d'un mot de tableau.

0
JLuc01 29 oct. 2020 à 02:40

2 réponses

Meilleure réponse

Lorsque vous collez la forme, ce ne sera pas la cellule, elle y sera ancrée mais flottera au-dessus. C'est exactement la même chose que dans Excel où la forme flotte au-dessus de la feuille de calcul et masque les cellules en dessous.

Pour avoir la forme dans le tableau, vous devez définir le type d'habillage sur Inline, sinon les formes s'empileront les unes sur les autres.

With wdTable.Rows(i + 1).Cells(3).Range
   .PasteSpecial
   .ShapeRange(1).WrapFormat.Type = wdWrapInline
End With

ÉDITER:

Les images sont collées dans Word en tant que InlineShapes. Ils ne s'empilent pas les uns sur les autres. Si vous essayez d'en coller plus d'un dans wdTable.Rows(i + 1).Cells(3).Range, chacun écrasera le dernier. Au lieu de cela, vous devez déclarer une variable en dehors de la boucle, quelque chose comme wdCellRange as Word.Range, puis l'utiliser lors de l'insertion des images, par exemple

Set wdCellRange = wdTable.Rows(i + 1).Cells(3).Range
With wdCellRange
    .Collapse Direction:= wdCollapseEnd
    .PasteSpecial
End With
1
Timothy Rylatt 29 oct. 2020 à 21:45

Tu pourrais essayer:

...Range.Collapse Direction:= wdCollapseEnd
0
Charles Kenyon 29 oct. 2020 à 02:28