2015-10-08 2 views
0

J'ai besoin d'appeler un fichier Word à partir d'Excel, et de créer un modèle. Le modèle aura 3 images UpperLeft, Upper Right et l'image centrale.Insérer des images d'Excel à mot à travers le tableau

Je pensais que ce serait le meilleur résultat à travers la table.

De quelque raison que je ne peux pas créer la table à partir d'Excel ..

Private Sub CommandButton13_Click() 
    'Using early binding, not late-binding 
    Dim wsDoc As Word.Document 
    Dim wsApp As Word.Application 
    Dim wsRng As Word.Range 
    Dim wsTable as Word.Table 

    Dim intNoOfRows 
    Dim intNoOfColumns 

    Dim s As Word.InlineShape 
    Dim shp As Word.Shape 

    intNoOfRows = 4 
    intNoOfColumns = 2 

    Set wsApp = New Word.Application 
    wsApp.Visible = True 

    Set wsDoc = wsApp.Documents.Add 
    Set wsRange = wsDoc.Content 

    Set wsTable = wsDoc.Tables.Add(wsRange, intNoOfRows, intNoOfColumns) 
    wsTable.Borders.Enable = True 
    wsTable.Cell(1, 1).Range.InlineShapes.AddPicture _ 
         UserForm1.txtImageLogoAdecco 
    wsTable.Cell(1, 2).Range.ParagraphFormat.Alignment = wdAlignParagraphRight 
    wsTable.Cell(1, 2).Range.InlineShapes.AddPicture _ 
         UserForm1.txtImageLogoClient 
    Set wsRng = wsTable.Cell(2, 1).Range 
    With wsRng.Paragraphs.Add 

    wsTable.Cell(2, 1).Merge MergeTo:=wsTable.Cell(2, 2) 
    wsTable.Cell(2, 1).Height = 520 
    wsTable.Cell(2, 1).Range.Paragraphs.Add 
    wsTable.Cell(3, 1).Merge MergeTo:=objTable.Cell(3, 2) 
    wsTable.Cell(3, 1).Range.Text = "Prepared by:" & " " & UserForm1.txtPrepared 
    wsTable.Cell(4, 1).Merge MergeTo:=objTable.Cell(4, 2) 
    wsTable.Cell(4, 1).Range.ParagraphFormat.Alignment = wdAlignParagraphRight 
    wsTable.Cell(4, 1).Range.Text = "Belgrade," & " " & Format(Date, "MMMM DD, YYYY ") 

    Set wsRange = Nothing 
    Set wsTable = Nothing 
    Set wsDoc = Nothing 
    Set wsApp = Nothing 
End Sub 
+0

Pourquoi vous préférez l'approche vba lorsqu'une table Excel contenant 3 images peut être facilement collée dans un document Word. – skkakkar

+0

La description de votre problème et votre code ne correspondent pas, il est donc difficile de suivre ce que vous attendez de ce qui se passe ... 1) Si vous ne voulez pas enregistrer les modifications dans template.docm, utilisez Documents.Add pas Documents .Ouvrir. 2) Enlever le With ... End With autour de cette déclaration. 3) Les signets sont-ils déjà présents dans le document? J'ai l'impression que vous les voulez dans la table, mais vous insérez la table. Si vous ciblez des cellules dans la table, à la place? –

+0

@CindyMeister exactement. S'il vous plaît, référez-vous à mon nouveau code mis à jour. J'ai réussi à insérer toutes les images dans la table (pour garder le formatage où je le veux), avec l'image de fond je veux le convertir en forme. Je veux envoyer iy derrière le texte, et enfin je veux déplacer le curseur de quelques lignes et écrire du texte. J'espère que c'est maintenant beaucoup plus clair. Merci! – Stefan0309

Répondre

0

Eh bien, il est un peu plus clair, mais pas complètement. J'ai pris la liberté d'éditer votre code afin qu'il soit correct, cohérent et lisible (sans toutes les lignes vides)!

Je vais commencer par la partie qui est claire: < < Je veux déplacer le curseur de quelques lignes et écrire du texte. >>

Pour déplacer le focus sous une table, vous obtenez la plage de la table, puis vous la réduisez. Par exemple:

Set wsRange = wsTable.Range wsRange.Collapse wdCollapseEnd « Maintenant, la plage est dans le paragraphe suivant le tableau wsRange.Text = "text tableau suivant"

« avec l'image d'arrière-plan que je veux pour le convertir en forme Je veux envoyer iy derrière le texte "

C'est la partie qui n'est pas claire pour moi. Voulez-vous dire que vous voulez insérer une image de plus et la positionner derrière le texte? Utilisez la méthode Shapes.Add et définissez WrapFormat.Type à wdWrapBehind