XL 2021 Export d'un Userform au format Docx;

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jeff1494

XLDnaute Occasionnel
Bonsoir à toutes et tous;

Je suis en train de me faire une petite boite à outils me permettant d'avoir des informations pour m'aider à monter une sorte de documentation du projet VBE.
Mon idée est de regrouper des informations du projet me permettant de monter une documentation cohérente du projet.

J'ai créé quelques macros pour me fournir des éléments, qui me serviront à créer de la doc, comme par exemple :
  1. Liste de tous les formulaires du projet.
  2. Liste des contrôles par formulaire.
  3. Liste des feuilles avec les attributs "masquée, protégée".
  4. Liste des noms de cellules et tableaux du classeur.
J'aimerai aussi pouvoir créer au format Word '.Docx' une documentation sur les formulaires. Pouvoir insérer dans un fichier ".docx" une capture des formulaires, et ainsi pouvoir documenter chaque contrôle par exemple.

J'ai trouvé une macro créée par @kiki29 il y a déjà un bon moment (Pris dans son récap des possibilités de jouer avec les PDF et Excel dont voici le lien).

Mon problème est qu'il exporte la capture d'écran au format PDF. Cela fonctionne parfaitement, mais je voudrais bien, en fait, sauvegarder la capture comme image dans un fichier Word.
J'ai bien sûr essayer de voir le code et si je pouvais le modifier. Mais le Hic est que Kiki29 a utilisé des concepts que je ne connais pas. Du genre "Const VK_SNAPSHOT = 44" voire " keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0" et d'autres.

Donc j'avoue humblement que d'une part j'aimerais bien comprendre ce genre d'instruction (L'aide sur les "Constantes KeyCode" m'a permis de comprendre l'idée générale, mais c'est tout.).

Je vous joins un fichier exemple très simple qui utilise la macro de Kiki29, et qui marche parfaitement bien.
Si une personne charitable pouvait :
  1. M'expliquer le code de kiki29.
  2. M'aider à créer une macro qui ferait le même genre de chose, à savoir:
    1. Prendre un "cliché" du formulaire au format Bmp, ou autre (.jpg, ...). Le format n'est une contrainte pour autant qu'il puisse être inclus dans un document.
    2. Pouvoir créer un document Word (format .docx) qui contiendrait ce cliché du formulaire. Le doc sera créé dans le répertoire du classeur, et avec le nom du formulaire.
Je vous joins un petit fichier qui m'a permis de tester la macro de kiki29. Il est minimaliste, juste un formulaire avec quelques contrôles bidons, et 3 boutons.
Un pour l'export vers PDF = "CommandButton1", le deuxième "CommandButton2" qui ne sert à rien d'autre que d'exister, et un troisième "CommandButton3" qui me servirait à créer le fameux document Word;

Si une âme charitable pouvait m'aider je lui en serais reconnaissant.
En attendant je vous souhaite à tous une bonne soirée.
 

Pièces jointes

Solution
bonsoir jeff
VB:
Private Sub CommandButton3_Click()
    PrintScreen
    DoEvents
    Dim wdApp As Object, wdDoc As Object
    ' creation de l'object application word
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True
    ' on créé un document
    Set wdDoc = wdApp.Documents.Add
    ' on colle la capture dans le document
    wdApp.Selection.Paste
    'on centre le tout
    wdApp.Selection.ParagraphFormat.Alignment = 1 ' 0=Left, 1=Center, 2=Right
    ' enregistrement du document
    wdDoc.SaveAs2 Environ("userprofile") & "\desktop\mon userform.docx"
    'on ferme
    wdDoc.Close
    wdApp.Quit
    MsgBox "enregistrement de la capture dans un fichier docw(word) terminé"
End Sub
Bonjour jeff1494, Patrick, le forum,

Pour finir, les diverses manipulations des paragraphes ne me plaisaient pas; je préfère utiliser InsertBefore et InsertAfter :
VB:
Private Sub CommandButton1_Click()
Dim Wapp As Object, Wdoc As Object
 
    Application.ScreenUpdating = False
    PrintScreen
    DoEvents
   
    Set Wapp = CreateObject("Word.Application")
    Wapp.Visible = True
    Set Wdoc = Wapp.Documents.Add
    Wapp.Selection.Paste
    Do: DoEvents: Loop Until Wdoc.Shapes.Count + Wdoc.InlineShapes.Count 'en attente du collage
    If Wdoc.Shapes.Count Then Wdoc.Shapes(1).ConvertToInlineShape
    Wdoc.Content.InsertBefore "Ci-dessous la copie d'écran" & vbCrLf
    Wdoc.Content.InsertAfter vbCrLf & "Fin de la copie d'écran"
    Wdoc.Paragraphs(2).Range.ParagraphFormat.Alignment = 1 'centrage avec le texte
   
    Wdoc.SaveAs ActiveWorkbook.Path & "\UserForm.docx"
    Wdoc.ExportAsFixedFormat ActiveWorkbook.Path & "\UserForm.pdf", 17 'wdExportFormatPDF
    Wdoc.Close False
    Wapp.Quit
    MsgBox "Les fichiers 'UserForm.docx' et 'UserForm.pdf' ont été créés..."
    Unload Me
End Sub
A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
16
Affichages
467
Réponses
5
Affichages
364
Réponses
7
Affichages
117
Retour