begin process at 2008 08 21 14:53:56
1 229 438 membres
257 nouveaux aujourd'hui
14 263 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

IMPRIMER UN DOCUMENT WORD


Information sur la source

Catégorie :Imprimante Classé sous : imprimer, document, word, winword, impression Niveau : Débutant Date de création : 04/07/2000 Vu : 30 170

Note :
5,25 / 10 - par 8 personnes
5,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

ce code vous expose les trois manières d'imprimer un document .doc
pour utiliser ce code, creez un projet .exe avec une form et trois boutons (command1, ...).
n'oublier pas d'inscrire la bibliotheque d'objet word dans les référence de votre projet!

Source

  • 'n'oubliez pas de changer la constante file en fonction de votre système :o)
  • Const file As Variant = "D:\test.doc"
  • Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  • Private Declare Function FindExecutableA Lib "shell32.dll" (ByVal lpFile As String, ByVal lpdirectory As String, ByVal lpResult As String) As Long
  • Private Const MAX_FILENAME_LEN = 256
  • Private Sub Command1_Click()
  • On Error Resume Next
  • 'détermine le chemin d'accès de Word
  • Dim app
  • app = FindExecutable(file)
  • 'lance word
  • Shell app & " " & file
  • 'imprime le doc avec les paramètres par défaut
  • 'cliquez sur printout puis appuyez sur F1 pour + d'infos
  • Word.ActiveDocument.PrintOut
  • 'stoppe toutes les activités de l'appli pendant 5 sec. pour éviter tout pb
  • Sleep (5000)
  • 'ferme Word
  • Word.Application.Quit
  • End Sub
  • Public Function FindExecutable(s As String) As String
  • Dim i As Integer
  • Dim s2 As String
  • s2 = String(MAX_FILENAME_LEN, 32) & Chr$(0)
  • i = FindExecutableA(s & Chr$(0), vbNullString, s2)
  • If i > 32 Then
  • FindExecutable = Left$(s2, InStr(s2, Chr$(0)) - 1)
  • Else
  • FindExecutable = ""
  • End If
  • End Function
  • Private Sub Command2_Click()
  • On Error Resume Next
  • 'détermine le chemin d'accès de Word
  • Dim app
  • app = FindExecutable(file)
  • 'lance word
  • Shell app & " " & file
  • 'imprime le doc avec les paramètres par défaut
  • 'cliquez sur printout puis appuyez sur F1 pour + d'infos
  • Word.Application.Dialogs(wdDialogFilePrint).Show
  • 'quitte word
  • Word.Application.Quit
  • End Sub
  • Private Sub Command3_Click()
  • MsgBox "je ne suis pas arrivé à établir une liaison DDE avec Word", vbExclamation
  • End Sub
  • Private Sub Form_Load()
  • Me.Height = 2460
  • Me.Width = 4050
  • Me.Caption = "comment imprimer un .doc ?"
  • With Command1
  • .Height = 320
  • .Width = 3375
  • .Left = 240
  • .Top = 480
  • .Caption = "par l'objet Word sans intervention utilisateur"
  • End With
  • With Command2
  • .Height = 320
  • .Width = 3375
  • .Left = 240
  • .Top = 960
  • .Caption = "par l'objet Word avec intervention utilisateur"
  • End With
  • With Command3
  • .Height = 320
  • .Width = 3375
  • .Left = 240
  • .Top = 1440
  • .Caption = "par liaison dde"
  • End With
  • End Sub
'n'oubliez pas de changer la constante file en fonction de votre système :o)
Const file As Variant = "D:\test.doc"

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function FindExecutableA Lib "shell32.dll" (ByVal lpFile As String, ByVal lpdirectory As String, ByVal lpResult As String) As Long
Private Const MAX_FILENAME_LEN = 256

Private Sub Command1_Click()
On Error Resume Next
'détermine le chemin d'accès de Word
Dim app
app = FindExecutable(file)
'lance word
Shell app & " " & file
'imprime le doc avec les paramètres par défaut
'cliquez sur printout puis appuyez sur F1 pour + d'infos
Word.ActiveDocument.PrintOut
'stoppe toutes les activités de l'appli pendant 5 sec. pour éviter tout pb
Sleep (5000)
'ferme Word
Word.Application.Quit
End Sub

Public Function FindExecutable(s As String) As String
   Dim i As Integer
   Dim s2 As String
   s2 = String(MAX_FILENAME_LEN, 32) & Chr$(0)
   i = FindExecutableA(s & Chr$(0), vbNullString, s2)
   If i > 32 Then
      FindExecutable = Left$(s2, InStr(s2, Chr$(0)) - 1)
   Else
      FindExecutable = ""
   End If
End Function

Private Sub Command2_Click()
On Error Resume Next
'détermine le chemin d'accès de Word
Dim app
app = FindExecutable(file)
'lance word
Shell app & " " & file
'imprime le doc avec les paramètres par défaut
'cliquez sur printout puis appuyez sur F1 pour + d'infos
Word.Application.Dialogs(wdDialogFilePrint).Show
'quitte word
Word.Application.Quit
End Sub

Private Sub Command3_Click()
MsgBox "je ne suis pas arrivé à établir une liaison DDE avec Word", vbExclamation
End Sub

Private Sub Form_Load()
Me.Height = 2460
Me.Width = 4050
Me.Caption = "comment imprimer un .doc ?"
With Command1
.Height = 320
.Width = 3375
.Left = 240
.Top = 480
.Caption = "par l'objet Word sans intervention utilisateur"
End With
With Command2
.Height = 320
.Width = 3375
.Left = 240
.Top = 960
.Caption = "par l'objet Word avec intervention utilisateur"
End With
With Command3
.Height = 320
.Width = 3375
.Left = 240
.Top = 1440
.Caption = "par liaison dde"
End With
End Sub
 

Conclusion

ce code ne prévoit pas une vrai gestion des erreurs!
en effet, il se pourrait bien que l'utilisateur final ne possède pas word...
  • signaler à un administrateur
    Commentaire de gabchampagne le 18/10/2003 01:21:05

    Ton api :

    FindExecutableA

    m'interresse et je vais la prendre. Merci

  • signaler à un administrateur
    Commentaire de cortomaltez le 10/12/2004 19:50:31

    Dans ton code tu utilises un document WORD éxistant sur le poste client;
    1ere question : est il possible de générer ce document WORD dynamiquement via VB avec en parametres du texte provenant aussi de VB ( pour un programme générant des factures destinées à être imprimées automatiquement ) ?
    2e question : comment se nomme la référence WORD à ajouter au programme pour utiliser les fonctionnalités de WORD avec VB
    ( faut il la télécharger ou est elle comprise dans la bibliothèque de références  et sous quel nom ?)

  • signaler à un administrateur
    Commentaire de Waldo2188 le 08/02/2005 11:56:42

    Ton code est vraiment simpa.
    Ca mouvre bien word, mais il n'imprime rien et ne le ferme pas, est-ce que tu saurais pour quoi?
    merci

  • signaler à un administrateur
    Commentaire de SgtKabukinan le 21/12/2005 11:41:58

    @CORTOMALTEZ :
    je te renvoi sur cette source
    http://www.vbfrance.com/article.aspx?ID=8072
    si tu cherches tjs ;)
    J'aime aussi FindExecutableA !
    Ca va changer ma vie lol

  • signaler à un administrateur
    Commentaire de buzzo le 29/04/2006 10:25:44

    merci beaucoup pour ce code! c'est super

  • signaler à un administrateur
    Commentaire de buzzo le 24/05/2006 13:27:15

    Bonjour, j'ai le même problème que  Waldo2188 à t'il été résolu ? Word s'ouvre, ne se ferme pas et rien ne s'est passé.J'ai fait le programme en pas à pas, et bien que je comprenne pas tout le code je ne voit pas où est l'erreur. Je fonctionne sous office 2003.

  • signaler à un administrateur
    Commentaire de aderko le 16/08/2008 17:21:08

    ce programme est impec...
    je voudrais ajouter une pic dans la facture...si vous pouvez m'aider
    ce serait sympa...merci

Ajouter un commentaire

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
extraction dinformatio...
Budget : 300€
campagne Adwords
Budget : 5 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS