Vb.Net Enregistrer une pictureBox directement dans un doc word

Résolu
kikou93 Messages postés 438 Statut Membre -  
kikou93 Messages postés 438 Statut Membre -
Bonjour,

Je sais que je pose beaucoup de questions ces temps-ci et j'espère n'importuner personne par mes questions ...

J'ai à nouveau un écueil à évoquer avec ceux qui veulent bien y prendre part. je veux enregistrer une PictureBox dans un document Word , j'ai beau chercher je n'ai rien trouvé (même si j'ai chercher dans des dizaines de page) :

j'ai bien essais de trouver une solution, alors j'ai crée le code suivant :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
My.Computer.FileSystem.CreateDirectory("C:\Répertoire")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PictureBox1.Image.Save("C:\Répertoire\image.bmp")
End Sub
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
My.Computer.FileSystem.DeleteDirectory("C:\Répertoire", FileIO.DeleteDirectoryOption.DeleteAllContents)
End Sub

après j'utilise le code suivant pour enregistrer cette image dans un document word (Remarque : ce n'ai pas le code complet c'est juste la partie qui m'intéresse)
oPara5 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range)      oPara5.Range.InlineShapes.AddPicture(FileName:="C:\Users\...\Desktop\Image00006.png", LinkToFile:=False, _
SaveWithDocument:=True)

Remarque : j'ai crée le dossier du nom "répertoire", dont le cas ou j'enregistre beaucoup d'image et je veux les supprimer alors je supprime le dossier "répertoire" avec lui tout les image enregistrer.

mais ce que m'a paru assez long pour enregistrer un seul pictureBox dans un document word
alors si quelqu'un a une meilleur solution je suis prenant
Merci d’avance pour votre aide



Comment ça marche c'est cool! 
      1000 Merci les Amis

2 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Voilà la copie du code que je t'ai indiqué:

    Imports Microsoft.Office.Interop
    Imports Microsoft.Office.Interop.Word
    Imports System.IO
    Public Class Result
    #Region "Déclarations"
        Dim fichier As String = System.Windows.Forms.Application.StartupPath & "\monimage.jpg"
    #End Region
    #Region "Exportations"
        Private Sub ToolStripWord_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripWord.Click
            Dim reponse As DialogResult = MessageBox.Show("Ouvrir un document existant: Oui" & Environment.NewLine & "Création d'un document: Non", _
    "Choix du document de reception", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information)
            'enregistrement image 
            picresult.Image.Save(fichier, System.Drawing.Imaging.ImageFormat.Jpeg)
            'Créer une instance de word
            Dim oWord As New Word.Application
            If reponse = vbYes Then
                'ouverture document Word
                Dim dlgFile As New OpenFileDialog
                With dlgFile
                    .Title = "Choisissez votre document"
                    .Filter = "Fichiers Word (*.docx,*.doc)|*.docx;*.doc"
                    .FilterIndex = 1
                    .RestoreDirectory = False
                    If .ShowDialog() = System.Windows.Forms.DialogResult.OK Then
                        oWord.Documents.Open(.FileName) 'Ouvrir un nouveau document
                    Else
                        MessageBox.Show("Opération annulée par l'utilisateur!", "Ouverture", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                        'suppression fichier image
                        suppression()
                        Exit Sub
                    End If
                    .Dispose()
                End With
            ElseIf reponse = vbNo Then
                oWord.Documents.Add() 'création document
            Else 'annuler
                'suppression fichier image
                suppression()
                Exit Sub
            End If
            'rendre le document word visible
            oWord.Visible = True 'ce n'est pas obligatoire
            oWord.Selection.InlineShapes.AddPicture(FileName:= _
         fichier, LinkToFile:= _
             False, SaveWithDocument:=True) 'insertion image
            oWord.ActiveDocument.Close() 'on ferme le document
            oWord.Visible = False
            oWord.Quit() 'on ferme Word
            'suppression fichier image
            suppression()
        End Sub
    #End Region
    #Region "Fonctions"
        Private Sub suppression()
            'suppression fichier image
            If File.Exists(fichier) Then
                Try
                    File.Delete(fichier)
                Catch ex As Exception
                    MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End Try
            End If
        End Sub
    #End Region
    End Class

    1
    1. kikou93 Messages postés 438 Statut Membre 1
       
      merci beaucoup cs_Le Pivert j'ai compris comment ça marche
      je te suis vraiment reconnaissant
      0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Dans un précédent post, je t'ai donné ce lien. En lisant tout, il y a un lien avec des exemples pour Excel, Word et PowerPoint. Dans cet exemple on importe justement une image:

    https://codes-sources.commentcamarche.net/source/100410-piloter-office-en-vb-net
    0
    1. Utilisateur anonyme
       
      Salut, c'est bien tout le problème, on lui donne des liens, mais il ne les lit pas ou pas entièrement....
      0
    2. kikou93 Messages postés 438 Statut Membre 1
       
      Merci beaucoup cs_Le Pivert j'ai déjà remarqué le code que tu m'a envoyé, c'est juste que je ne sais pas comment l'intégrer au code qui me permet de remplire un document word :
      https://forums.commentcamarche.net/forum/affich-33415553-creer-et-remplire-un-fichier-word-avec-visual-basic#p33438805
      mais je vais réessayer je te tiendrai au courant.

      à propos du commentaire de Whismeril j'ai déjà vu l'exemple de cs_Le Pivert auparavant
      je lis tous les liens que m'envoi jusqu'à la fin par respect à ceux qui m'aide.
      0
    3. kikou93 Messages postés 438 Statut Membre 1
       
      bonjour cs_Le Pivert,
      moi ce que je veux et d’insérer le contenue de la PictureBox j'utilise après le texte dans mon document Word, alors j'ai met a la place de ce code :
      oPara5.Range.InlineShapes.AddPicture(FileName:="C:\Users\...\Desktop\Image00006.png", LinkToFile:=False, _
      SaveWithDocument:=True)

      ton code
      Dim fichier As String = System.Windows.Forms.Application.StartupPath & "\monimage.jpg"
             PictureBox1.Image.Save(fichier, System.Drawing.Imaging.ImageFormat.Jpeg)
      (normalement ç'est ce que permet d'enregistrer le contenue de la PictureBox dans ton code)

      il s'exécute sans afficher d'erreur mais l'image n’apparaît pas dans le document Word
      comme je l'ai dit au par avant je n'arrive pas a intégrer ton code dans le mien :
      peux-tu m'expliquer comment l'intégrer s'il te plait
      0