1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| Option Explicit
Private Declare Sub keybd_event Lib "user32" ( _
ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
Private Sub CommandButton1_Click()
'impression de plusieurs USF dans une feuille
'nécéssite d'activer les références
'microsoft Word xx.x Object Library
'et
'Microsoft Visual Basic for applications extensibilty 5.3
Dim Wrd As Word.Application
Dim WrdDoc As Word.Document
Dim i As Integer, x As Integer
'creation session Word
Set Wrd = CreateObject("Word.Application")
'On Error Resume Next
Set WrdDoc = Wrd.Documents.Add
'pour que Word reste masqué pendant l'opération
Wrd.Visible = False
'hypothese que tous les USF du classeur sont affichés
For i = VBA.UserForms.Count - 1 To 0 Step -1
'Copie d'écran de la forme active
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents
'collage dans Word
Wrd.Selection.PasteSpecial DataType:=wdPasteBitmap
'redimensionnement images collées
With WrdDoc.Shapes(WrdDoc.Shapes.Count)
.Top = x
'redimensionne hauteur image
.Height = 250
'redimensionne largeur image
.Width = 250
End With
DoEvents
x = x + 250
Unload VBA.UserForms(i)
DoEvents
Next i
'impression
WrdDoc.PrintOut
'ferme le document Word sans sauvegarde
WrdDoc.Close False
'ferme l'application Word
Wrd.Quit
End Sub |
Partager