2010-01-08 5 views
7

Comment puis-je ajouter une image en utilisant VBA dans un document Word.Ajouter une image à un document Word et la mettre à l'échelle à l'aide de VBA

J'ai essayé d'ajouter un signet au document Word et essayé d'ajouter l'image, mais il ajoute toujours au haut du formulaire plutôt qu'à la zone de signet. Devrais-je persévérer avec le signet ou existe-t-il un autre moyen d'ajouter l'image?

See mon code ci-dessous:

Dim wrdApp As Word.Application 
Dim wrdDoc As Word.Document 
Set wrdApp = CreateObject("Word.Application") 

Dim objWdRange As Word.Range 
Dim GraphImage As String 
Dim shortString As String 

shortString = Range("short").Value 

GraphImage = "http://xxx.xxxxx.com/xxx/xxx.png?instrument=Image.png" 

wrdApp.Visible = True 
Set wrdDoc = wrdApp.Documents.Open("C:\Program Files\My Dropbox\dailystrategy.doc") 

Set objWdRange = wrdDoc.Content 

With wrdDoc 


    If wrdDoc.Bookmarks.Exists("shortString ") Then 
     wrdDoc.Bookmarks("shortString ").Range.Text = shortString 
    End If  

    If wrdDoc.Bookmarks.Exists("GraphImage") Then 
     wrdDoc.Bookmarks("GraphImage").Range.InlineShapes.AddPicture Filename:=GraphImage, LinkToFile:=False, SaveWithDocument:=True 
    End If 


    wrdDoc.SaveAs "c:\temp\test.doc" 

    ' close the document 
    Set wrdDoc = Nothing 
    Set wrdApp = Nothing 
End With 

ce qui a trait

Répondre

6

Eh bien, nous devons d'abord nettoyer votre code un peu, comme ci-dessous. Cela fonctionne bien sur mon site - il place l'image juste au début du signet GraphicImage, pas en haut du document - mais peut-être que votre image est si grande qu'elle s'étend vers le haut?

Dim objWdRange As Word.Range 
Dim GraphImage As String 
Dim shortString As String 
shortString = Range("short").Value '? don't know what this is for 
GraphImage = "http://xxx.xxxxx.com/xxx/xxx.png?instrument=Image.png" 
wrdApp.Visible = True 
    Set wrdDoc = wrdApp.Documents.Open("C:\Program Files\My Dropbox\dailystrategy.doc") 
    Set objWdRange = wrdDoc.Content '? don't know what this is for 
    With wrdDoc 
     If .Bookmarks.Exists("shortString ") Then 
      .Bookmarks("shortString ").Range.Text = shortString 
     End If 
    If .Bookmarks.Exists("GraphImage") Then 
     Dim wrdPic As Word.InlineShape 
     Set wrdPic = .Bookmarks("GraphImage").Range.InlineShapes.AddPicture(FileName:=GraphImage, LinkToFile:=False, SaveWithDocument:=True) 
     wrdPic.ScaleHeight = 50 
     wrdPic.ScaleWidth = 50 
    End If 
     .SaveAs "c:\temp\test.doc" 
    End With 
    wrdDoc.Close 
    Set wrdDoc = Nothing 
    wrdApp.Quit 
    Set wrdApp = Nothing 

EDIT: 11 janvier 2010 Le code ci-dessus a été modifié pour inclure

If .Bookmarks.Exists("GraphImage") Then 
Dim wrdPic As Word.InlineShape 
Set wrdPic = .Bookmarks("GraphImage").Range.InlineShapes.AddPicture(FileName:=GraphImage, LinkToFile:=False, SaveWithDocument:=True) 
    wrdPic.ScaleHeight = 50 
    wrdPic.ScaleWidth = 50 
End If 

Ceci définit l'image comme un objet et utilise ensuite les méthodes de mise à l'échelle ScaleHeight et ScaleWidth pour le rendre 50% plus petit en hauteur et en largeur.

+0

salut, merci pour cela, vous avez raison, l'image est insérée au bon endroit, mais ses dimensons sont trop grands pour la page. Est-il possible de définir les dimensions de l'image par programmation en utilisant VBA? – Kojof

+0

Oui, vous pouvez. Vous pouvez utiliser les propriétés Height/Width d'une forme en ligne, ou vous pouvez utiliser ScaleHeight/ScaleWidth comme j'ai mis à jour le code ci-dessus avec. –

+0

merci pour cela, très apprécié. – Kojof

Questions connexes