Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc
"Patrick EVEN" a écrit dans le message de news:%23rj%
Bonjour,
Connaissant le nom complet d'un fichier, j'aimerais savoir comment faire en VBA pour l'imprimer sans avoir à l'ouvrir, sur l'imprimante par défaut.
Ce fichier peut être un document Word, un classeur Excel, un fichier .pdf, ou d'un type que je ne connais pas à l'avance.
C'est un peu comme si je faisais appel au menu contextuel sur un
fichier
dans l'explorer Windows pour clicker sur la commande "Imprimer".
Hello,
tout simplement avec ShellExecute et le verbe "print".
Il ouvrira tout seul ce qu'il faut et imprimera, comme si on le faisait depuis le menu contextuel. Voir la doc de ShellExecute() pour la signification des différents paramètres si nécessaire.
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Const SW_SHOWNORMAL As Long = 1
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"Patrick EVEN" <peven@capgemini.fr> a écrit dans le message de
news:%23rj%23ffyMGHA.3856@TK2MSFTNGP12.phx.gbl...
Bonjour,
Connaissant le nom complet d'un fichier, j'aimerais savoir
comment faire en VBA pour l'imprimer sans avoir à l'ouvrir,
sur l'imprimante par défaut.
Ce fichier peut être un document Word, un classeur Excel,
un fichier .pdf, ou d'un type que je ne connais pas à l'avance.
C'est un peu comme si je faisais appel au menu contextuel sur un
fichier
dans l'explorer Windows pour clicker sur la commande "Imprimer".
Hello,
tout simplement avec ShellExecute et le verbe "print".
Il ouvrira tout seul ce qu'il faut et imprimera, comme si on
le faisait depuis le menu contextuel.
Voir la doc de ShellExecute() pour la signification des
différents paramètres si nécessaire.
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As
String, ByVal nShowCmd As Long) As Long
Private Const SW_SHOWNORMAL As Long = 1
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
"Patrick EVEN" a écrit dans le message de news:%23rj%
Bonjour,
Connaissant le nom complet d'un fichier, j'aimerais savoir comment faire en VBA pour l'imprimer sans avoir à l'ouvrir, sur l'imprimante par défaut.
Ce fichier peut être un document Word, un classeur Excel, un fichier .pdf, ou d'un type que je ne connais pas à l'avance.
C'est un peu comme si je faisais appel au menu contextuel sur un
fichier
dans l'explorer Windows pour clicker sur la commande "Imprimer".
Hello,
tout simplement avec ShellExecute et le verbe "print".
Il ouvrira tout seul ce qu'il faut et imprimera, comme si on le faisait depuis le menu contextuel. Voir la doc de ShellExecute() pour la signification des différents paramètres si nécessaire.
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Const SW_SHOWNORMAL As Long = 1
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
Patrick EVEN
Jean-Marc,
Merci. C'est bien ce qu'il me fallait.
Le fichier que j'imprime est un fichier temporaire. Je dois le détruire après son impression.
Comment puis-je le détruire sans que la commande d'impression me fasse remarquer que le fichier n'existe plus ?
Une exécution en mode synchrone en quelque sorte.
Cordialement, Patrick EVEN
Même si j'appartiens à la première des 10 catégories, j'ai encore beaucoup à apprendre !
"Jean-Marc" a écrit dans le message de news: 43f4d6f3$0$29223$
"Patrick EVEN" a écrit dans le message de news:%23rj%
Bonjour,
Connaissant le nom complet d'un fichier, j'aimerais savoir comment faire en VBA pour l'imprimer sans avoir à l'ouvrir, sur l'imprimante par défaut.
Ce fichier peut être un document Word, un classeur Excel, un fichier .pdf, ou d'un type que je ne connais pas à l'avance.
C'est un peu comme si je faisais appel au menu contextuel sur un
fichier
dans l'explorer Windows pour clicker sur la commande "Imprimer".
Hello,
tout simplement avec ShellExecute et le verbe "print".
Il ouvrira tout seul ce qu'il faut et imprimera, comme si on le faisait depuis le menu contextuel. Voir la doc de ShellExecute() pour la signification des différents paramètres si nécessaire.
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Const SW_SHOWNORMAL As Long = 1
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
Jean-Marc,
Merci.
C'est bien ce qu'il me fallait.
Le fichier que j'imprime est un fichier temporaire.
Je dois le détruire après son impression.
Comment puis-je le détruire sans que la commande d'impression
me fasse remarquer que le fichier n'existe plus ?
Une exécution en mode synchrone en quelque sorte.
Cordialement,
Patrick EVEN
Même si j'appartiens à la première des 10 catégories,
j'ai encore beaucoup à apprendre !
"Jean-Marc" <NO_SPAM_jean_marc_n2@yahoo.fr> a écrit dans le message de news:
43f4d6f3$0$29223$ba620e4c@news.skynet.be...
"Patrick EVEN" <peven@capgemini.fr> a écrit dans le message de
news:%23rj%23ffyMGHA.3856@TK2MSFTNGP12.phx.gbl...
Bonjour,
Connaissant le nom complet d'un fichier, j'aimerais savoir
comment faire en VBA pour l'imprimer sans avoir à l'ouvrir,
sur l'imprimante par défaut.
Ce fichier peut être un document Word, un classeur Excel,
un fichier .pdf, ou d'un type que je ne connais pas à l'avance.
C'est un peu comme si je faisais appel au menu contextuel sur un
fichier
dans l'explorer Windows pour clicker sur la commande "Imprimer".
Hello,
tout simplement avec ShellExecute et le verbe "print".
Il ouvrira tout seul ce qu'il faut et imprimera, comme si on
le faisait depuis le menu contextuel.
Voir la doc de ShellExecute() pour la signification des
différents paramètres si nécessaire.
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As
String, ByVal nShowCmd As Long) As Long
Private Const SW_SHOWNORMAL As Long = 1
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
Le fichier que j'imprime est un fichier temporaire. Je dois le détruire après son impression.
Comment puis-je le détruire sans que la commande d'impression me fasse remarquer que le fichier n'existe plus ?
Une exécution en mode synchrone en quelque sorte.
Cordialement, Patrick EVEN
Même si j'appartiens à la première des 10 catégories, j'ai encore beaucoup à apprendre !
"Jean-Marc" a écrit dans le message de news: 43f4d6f3$0$29223$
"Patrick EVEN" a écrit dans le message de news:%23rj%
Bonjour,
Connaissant le nom complet d'un fichier, j'aimerais savoir comment faire en VBA pour l'imprimer sans avoir à l'ouvrir, sur l'imprimante par défaut.
Ce fichier peut être un document Word, un classeur Excel, un fichier .pdf, ou d'un type que je ne connais pas à l'avance.
C'est un peu comme si je faisais appel au menu contextuel sur un
fichier
dans l'explorer Windows pour clicker sur la commande "Imprimer".
Hello,
tout simplement avec ShellExecute et le verbe "print".
Il ouvrira tout seul ce qu'il faut et imprimera, comme si on le faisait depuis le menu contextuel. Voir la doc de ShellExecute() pour la signification des différents paramètres si nécessaire.
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Const SW_SHOWNORMAL As Long = 1
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
Jean-Marc
Hello,
tu peux faire une exécution synchrone avec l'API WaitForSingleObject. Voici par exemple comment faire:
Option Explicit
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
' ' TODO: ajouter une gestion d'erreur ' Private Function PrintWhatever(myDoc As String) As Boolean Dim mProcess As Long Dim mRet As Long Dim mPID As Long
On Error GoTo PrintWhatever_Error
mPID = ShellExecute(0&, "print", myDoc, vbNullString, vbNullString, 0&) mProcess = OpenProcess(&H1F0FFF, 0, mPID) Do mRet = WaitForSingleObject(mProcess, 1000) If mRet <> &H102& Then Exit Do End If DoEvents Loop CloseHandle mProcess PrintWhatever = True PrintWhatever_End: Exit Function
PrintWhatever_Error: Resume PrintWhatever_End End Function
Private Sub Command1_Click() Dim r As Boolean
r = PrintWhatever("c:truc.doc") If r Then MsgBox "impression finie." ' ici on peut faire kill c:truc.doc Else ' ici qq chose s'est mal passé End If End Sub
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"Patrick EVEN" a écrit dans le message de news:
Jean-Marc,
Merci. C'est bien ce qu'il me fallait.
Le fichier que j'imprime est un fichier temporaire. Je dois le détruire après son impression.
Comment puis-je le détruire sans que la commande d'impression me fasse remarquer que le fichier n'existe plus ?
Une exécution en mode synchrone en quelque sorte.
Cordialement, Patrick EVEN
Même si j'appartiens à la première des 10 catégories, j'ai encore beaucoup à apprendre !
"Jean-Marc" a écrit dans le message de
news:
43f4d6f3$0$29223$ > "Patrick EVEN" a écrit dans le message de > news:%23rj% >> Bonjour, >> >> Connaissant le nom complet d'un fichier, j'aimerais savoir >> comment faire en VBA pour l'imprimer sans avoir à l'ouvrir, >> sur l'imprimante par défaut. >> >> Ce fichier peut être un document Word, un classeur Excel, >> un fichier .pdf, ou d'un type que je ne connais pas à l'avance. >> >> C'est un peu comme si je faisais appel au menu contextuel sur un > fichier >> dans l'explorer Windows pour clicker sur la commande "Imprimer". >> > > Hello, > > tout simplement avec ShellExecute et le verbe "print". > > Il ouvrira tout seul ce qu'il faut et imprimera, comme si on > le faisait depuis le menu contextuel. > Voir la doc de ShellExecute() pour la signification des > différents paramètres si nécessaire. > > > Private Declare Function ShellExecute Lib "shell32.dll" Alias > "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String,
ByVal
> lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As > String, ByVal nShowCmd As Long) As Long > Private Const SW_SHOWNORMAL As Long = 1 > > > Private Sub Command1_Click() > Dim s As String > > ' par exemple un document word > s = "c:truc.doc" > > ShellExecute hwnd, "print", s, vbNullString, vbNullString, > SW_SHOWNORMAL > > End Sub > > > -- > Jean-marc > Tester mon serveur (VB6) => http://myjmnhome.dyndns.org > "There are only 10 kind of people > those who understand binary and those who don't." > mailto: remove '_no_spam_' ; >
Hello,
tu peux faire une exécution synchrone avec
l'API WaitForSingleObject. Voici par exemple comment faire:
Option Explicit
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal
hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As
Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal
dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId
As Long) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As
String, ByVal nShowCmd As Long) As Long
'
' TODO: ajouter une gestion d'erreur
'
Private Function PrintWhatever(myDoc As String) As Boolean
Dim mProcess As Long
Dim mRet As Long
Dim mPID As Long
On Error GoTo PrintWhatever_Error
mPID = ShellExecute(0&, "print", myDoc, vbNullString, vbNullString,
0&)
mProcess = OpenProcess(&H1F0FFF, 0, mPID)
Do
mRet = WaitForSingleObject(mProcess, 1000)
If mRet <> &H102& Then
Exit Do
End If
DoEvents
Loop
CloseHandle mProcess
PrintWhatever = True
PrintWhatever_End:
Exit Function
PrintWhatever_Error:
Resume PrintWhatever_End
End Function
Private Sub Command1_Click()
Dim r As Boolean
r = PrintWhatever("c:truc.doc")
If r Then
MsgBox "impression finie."
' ici on peut faire kill c:truc.doc
Else
' ici qq chose s'est mal passé
End If
End Sub
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
"Patrick EVEN" <peven@capgemini.fr> a écrit dans le message de
news:e8WvWX6MGHA.3984@TK2MSFTNGP14.phx.gbl...
Jean-Marc,
Merci.
C'est bien ce qu'il me fallait.
Le fichier que j'imprime est un fichier temporaire.
Je dois le détruire après son impression.
Comment puis-je le détruire sans que la commande d'impression
me fasse remarquer que le fichier n'existe plus ?
Une exécution en mode synchrone en quelque sorte.
Cordialement,
Patrick EVEN
Même si j'appartiens à la première des 10 catégories,
j'ai encore beaucoup à apprendre !
"Jean-Marc" <NO_SPAM_jean_marc_n2@yahoo.fr> a écrit dans le message de
news:
43f4d6f3$0$29223$ba620e4c@news.skynet.be...
> "Patrick EVEN" <peven@capgemini.fr> a écrit dans le message de
> news:%23rj%23ffyMGHA.3856@TK2MSFTNGP12.phx.gbl...
>> Bonjour,
>>
>> Connaissant le nom complet d'un fichier, j'aimerais savoir
>> comment faire en VBA pour l'imprimer sans avoir à l'ouvrir,
>> sur l'imprimante par défaut.
>>
>> Ce fichier peut être un document Word, un classeur Excel,
>> un fichier .pdf, ou d'un type que je ne connais pas à l'avance.
>>
>> C'est un peu comme si je faisais appel au menu contextuel sur un
> fichier
>> dans l'explorer Windows pour clicker sur la commande "Imprimer".
>>
>
> Hello,
>
> tout simplement avec ShellExecute et le verbe "print".
>
> Il ouvrira tout seul ce qu'il faut et imprimera, comme si on
> le faisait depuis le menu contextuel.
> Voir la doc de ShellExecute() pour la signification des
> différents paramètres si nécessaire.
>
>
> Private Declare Function ShellExecute Lib "shell32.dll" Alias
> "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String,
ByVal
> lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As
> String, ByVal nShowCmd As Long) As Long
> Private Const SW_SHOWNORMAL As Long = 1
>
>
> Private Sub Command1_Click()
> Dim s As String
>
> ' par exemple un document word
> s = "c:truc.doc"
>
> ShellExecute hwnd, "print", s, vbNullString, vbNullString,
> SW_SHOWNORMAL
>
> End Sub
>
>
> --
> Jean-marc
> Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
> "There are only 10 kind of people
> those who understand binary and those who don't."
> mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
>
tu peux faire une exécution synchrone avec l'API WaitForSingleObject. Voici par exemple comment faire:
Option Explicit
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
' ' TODO: ajouter une gestion d'erreur ' Private Function PrintWhatever(myDoc As String) As Boolean Dim mProcess As Long Dim mRet As Long Dim mPID As Long
On Error GoTo PrintWhatever_Error
mPID = ShellExecute(0&, "print", myDoc, vbNullString, vbNullString, 0&) mProcess = OpenProcess(&H1F0FFF, 0, mPID) Do mRet = WaitForSingleObject(mProcess, 1000) If mRet <> &H102& Then Exit Do End If DoEvents Loop CloseHandle mProcess PrintWhatever = True PrintWhatever_End: Exit Function
PrintWhatever_Error: Resume PrintWhatever_End End Function
Private Sub Command1_Click() Dim r As Boolean
r = PrintWhatever("c:truc.doc") If r Then MsgBox "impression finie." ' ici on peut faire kill c:truc.doc Else ' ici qq chose s'est mal passé End If End Sub
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"Patrick EVEN" a écrit dans le message de news:
Jean-Marc,
Merci. C'est bien ce qu'il me fallait.
Le fichier que j'imprime est un fichier temporaire. Je dois le détruire après son impression.
Comment puis-je le détruire sans que la commande d'impression me fasse remarquer que le fichier n'existe plus ?
Une exécution en mode synchrone en quelque sorte.
Cordialement, Patrick EVEN
Même si j'appartiens à la première des 10 catégories, j'ai encore beaucoup à apprendre !
"Jean-Marc" a écrit dans le message de
news:
43f4d6f3$0$29223$ > "Patrick EVEN" a écrit dans le message de > news:%23rj% >> Bonjour, >> >> Connaissant le nom complet d'un fichier, j'aimerais savoir >> comment faire en VBA pour l'imprimer sans avoir à l'ouvrir, >> sur l'imprimante par défaut. >> >> Ce fichier peut être un document Word, un classeur Excel, >> un fichier .pdf, ou d'un type que je ne connais pas à l'avance. >> >> C'est un peu comme si je faisais appel au menu contextuel sur un > fichier >> dans l'explorer Windows pour clicker sur la commande "Imprimer". >> > > Hello, > > tout simplement avec ShellExecute et le verbe "print". > > Il ouvrira tout seul ce qu'il faut et imprimera, comme si on > le faisait depuis le menu contextuel. > Voir la doc de ShellExecute() pour la signification des > différents paramètres si nécessaire. > > > Private Declare Function ShellExecute Lib "shell32.dll" Alias > "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String,
ByVal
> lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As > String, ByVal nShowCmd As Long) As Long > Private Const SW_SHOWNORMAL As Long = 1 > > > Private Sub Command1_Click() > Dim s As String > > ' par exemple un document word > s = "c:truc.doc" > > ShellExecute hwnd, "print", s, vbNullString, vbNullString, > SW_SHOWNORMAL > > End Sub > > > -- > Jean-marc > Tester mon serveur (VB6) => http://myjmnhome.dyndns.org > "There are only 10 kind of people > those who understand binary and those who don't." > mailto: remove '_no_spam_' ; >