Je cherche à imprimer automatiquement des pages html mais il me reste un
problème. J'ai insérer ce code dans VBA:
Dim page as new InternetExplorer
sub essai()
page.navigate "c:\mapage.htm"
page.visible=true
page.ExecWB OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER
page.quit
End sub
Le problème dans ce code c'est que je ferme trop vite la page alors qu'il
n'a pas eu le temps d'imprimer la page. Je ne sais pas comment (sans mettre
un delai) faire pour réceptionner un message de fin d'impression (ou fin
spool).
-- Amicalement. Pascal "il n'y a pas de vent favorable pour celui qui ne sait pas ou il va." Sénèque. http://www.ilyapa.net/excel "cmoietvous" a écrit dans le message de news: QjO_b.26559$
Bonjour à tous,
Je cherche à imprimer automatiquement des pages html mais il me reste un problème. J'ai insérer ce code dans VBA:
Dim page as new InternetExplorer
sub essai() page.navigate "c:mapage.htm" page.visible=true page.ExecWB OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER page.quit End sub
Le problème dans ce code c'est que je ferme trop vite la page alors qu'il n'a pas eu le temps d'imprimer la page. Je ne sais pas comment (sans mettre
un delai) faire pour réceptionner un message de fin d'impression (ou fin spool).
Quelqu'un peut il m'aider?
Salut,
ne faut-il pas utiliser doEvent ?
si .ReadyState existe dans ton objet
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"cmoietvous" <cmoietvousnospam@free.fr> a écrit dans le message de news:
QjO_b.26559$zm5.8407@nntpserver.swip.net...
Bonjour à tous,
Je cherche à imprimer automatiquement des pages html mais il me reste un
problème. J'ai insérer ce code dans VBA:
Dim page as new InternetExplorer
sub essai()
page.navigate "c:mapage.htm"
page.visible=true
page.ExecWB OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER
page.quit
End sub
Le problème dans ce code c'est que je ferme trop vite la page alors qu'il
n'a pas eu le temps d'imprimer la page. Je ne sais pas comment (sans
mettre
un delai) faire pour réceptionner un message de fin d'impression (ou fin
spool).
-- Amicalement. Pascal "il n'y a pas de vent favorable pour celui qui ne sait pas ou il va." Sénèque. http://www.ilyapa.net/excel "cmoietvous" a écrit dans le message de news: QjO_b.26559$
Bonjour à tous,
Je cherche à imprimer automatiquement des pages html mais il me reste un problème. J'ai insérer ce code dans VBA:
Dim page as new InternetExplorer
sub essai() page.navigate "c:mapage.htm" page.visible=true page.ExecWB OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER page.quit End sub
Le problème dans ce code c'est que je ferme trop vite la page alors qu'il n'a pas eu le temps d'imprimer la page. Je ne sais pas comment (sans mettre
un delai) faire pour réceptionner un message de fin d'impression (ou fin spool).
Quelqu'un peut il m'aider?
j
alors, il faut employer les grands moyens... essaie d'utiliser cette fonction qui te dit si l'imprimante est libre :
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long Private Declare Function EnumJobs Lib "winspool.drv" Alias "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob As Long, ByVal NoJobs As Long, ByVal Level As Long, pJob As Any, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
Function printfini() Dim imprimante As Long, zaza As Long, toto As Long OpenPrinter "HP DeskJet 710C", imprimante, ByVal 0& zaza = 0 EnumJobs imprimante, 0, 99, 1, ByVal 0&, 0, zaza, toto ClosePrinter imprimante printfini = True If zaza > 0 Then printfini = False End Function
pense à mettre le nom de ton imprimante (pas celui de la mienne !) et dans ton sub, tu mets une boucle pour attendre la fin de l'impression :
Do While Not printfini Loop MsgBox "ça y est !"
http://jacxl.free.fr
"cmoietvous" a écrit dans le message de news: SBX_b.26918$
Oui j'ai essayé mais cela ne fonctionne pas car busy est une propriété pour
une opération de download et non pour l'impression!
alors, il faut employer les grands moyens...
essaie d'utiliser cette fonction qui te dit si l'imprimante est libre :
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA"
(ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As
Long) As Long
Private Declare Function EnumJobs Lib "winspool.drv" Alias "EnumJobsA"
(ByVal hPrinter As Long, ByVal FirstJob As Long, ByVal NoJobs As Long, ByVal
Level As Long, pJob As Any, ByVal cdBuf As Long, pcbNeeded As Long,
pcReturned As Long) As Long
Function printfini()
Dim imprimante As Long, zaza As Long, toto As Long
OpenPrinter "HP DeskJet 710C", imprimante, ByVal 0&
zaza = 0
EnumJobs imprimante, 0, 99, 1, ByVal 0&, 0, zaza, toto
ClosePrinter imprimante
printfini = True
If zaza > 0 Then printfini = False
End Function
pense à mettre le nom de ton imprimante (pas celui de la mienne !)
et dans ton sub, tu mets une boucle pour attendre la fin de l'impression :
Do While Not printfini
Loop
MsgBox "ça y est !"
j@c
http://jacxl.free.fr
"cmoietvous" <cmoietvousnospam@free.fr> a écrit dans le message de news:
SBX_b.26918$zm5.8513@nntpserver.swip.net...
Oui j'ai essayé mais cela ne fonctionne pas car busy est une propriété
pour
une opération de download et non pour l'impression!
alors, il faut employer les grands moyens... essaie d'utiliser cette fonction qui te dit si l'imprimante est libre :
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long Private Declare Function EnumJobs Lib "winspool.drv" Alias "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob As Long, ByVal NoJobs As Long, ByVal Level As Long, pJob As Any, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
Function printfini() Dim imprimante As Long, zaza As Long, toto As Long OpenPrinter "HP DeskJet 710C", imprimante, ByVal 0& zaza = 0 EnumJobs imprimante, 0, 99, 1, ByVal 0&, 0, zaza, toto ClosePrinter imprimante printfini = True If zaza > 0 Then printfini = False End Function
pense à mettre le nom de ton imprimante (pas celui de la mienne !) et dans ton sub, tu mets une boucle pour attendre la fin de l'impression :
Do While Not printfini Loop MsgBox "ça y est !"
http://jacxl.free.fr
"cmoietvous" a écrit dans le message de news: SBX_b.26918$
Oui j'ai essayé mais cela ne fonctionne pas car busy est une propriété pour
une opération de download et non pour l'impression!
j
ou bien, sans avoir besoin d'entrer le nom de l'imprimante :
Private Declare Function GetProfileString Lib "kernel32.dll" _ Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, _ ByVal lpDefault As String, ByVal lpReturnedString As String, _ ByVal nSize As Long) As Long Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" _ (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long Private Declare Function ClosePrinter Lib "winspool.drv" _ (ByVal hPrinter As Long) As Long Private Declare Function EnumJobs Lib "winspool.drv" _ Alias "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob As Long, _ ByVal NoJobs As Long, ByVal Level As Long, pJob As Any, ByVal cdBuf As Long, _ pcbNeeded As Long, pcReturned As Long) As Long
Function printfini() Dim nimpr As String * 254 Dim imprimante As Long, zaza As Long, toto As Long GetProfileString "windows", "device", ",,,", nimpr, 254 nom_imprimante = Left(nimpr, InStr(nimpr, ",") - 1) OpenPrinter nom_imprimante, imprimante, ByVal 0& zaza = 0 EnumJobs imprimante, 0, 99, 1, ByVal 0&, 0, zaza, toto ClosePrinter imprimante printfini = True If zaza > 0 Then printfini = False End Function
http://jacxl.free.fr
"" a écrit dans le message de news: 403d06d4$0$22389$
alors, il faut employer les grands moyens... essaie d'utiliser cette fonction qui te dit si l'imprimante est libre :
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA"
(ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As
Long) As Long Private Declare Function EnumJobs Lib "winspool.drv" Alias "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob As Long, ByVal NoJobs As Long, ByVal
Level As Long, pJob As Any, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
Function printfini() Dim imprimante As Long, zaza As Long, toto As Long OpenPrinter "HP DeskJet 710C", imprimante, ByVal 0& zaza = 0 EnumJobs imprimante, 0, 99, 1, ByVal 0&, 0, zaza, toto ClosePrinter imprimante printfini = True If zaza > 0 Then printfini = False End Function
pense à mettre le nom de ton imprimante (pas celui de la mienne !) et dans ton sub, tu mets une boucle pour attendre la fin de l'impression :
Do While Not printfini Loop MsgBox "ça y est !"
http://jacxl.free.fr
"cmoietvous" a écrit dans le message de news: SBX_b.26918$
Oui j'ai essayé mais cela ne fonctionne pas car busy est une propriété pour
une opération de download et non pour l'impression!
ou bien, sans avoir besoin d'entrer le nom de l'imprimante :
Private Declare Function GetProfileString Lib "kernel32.dll" _
Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As
String, _
ByVal lpDefault As String, ByVal lpReturnedString As String, _
ByVal nSize As Long) As Long
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA"
_
(ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As
Long
Private Declare Function ClosePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Declare Function EnumJobs Lib "winspool.drv" _
Alias "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob As Long, _
ByVal NoJobs As Long, ByVal Level As Long, pJob As Any, ByVal cdBuf As
Long, _
pcbNeeded As Long, pcReturned As Long) As Long
Function printfini()
Dim nimpr As String * 254
Dim imprimante As Long, zaza As Long, toto As Long
GetProfileString "windows", "device", ",,,", nimpr, 254
nom_imprimante = Left(nimpr, InStr(nimpr, ",") - 1)
OpenPrinter nom_imprimante, imprimante, ByVal 0&
zaza = 0
EnumJobs imprimante, 0, 99, 1, ByVal 0&, 0, zaza, toto
ClosePrinter imprimante
printfini = True
If zaza > 0 Then printfini = False
End Function
j@c
http://jacxl.free.fr
"j@c" <jacques.chaussard@noos.fr> a écrit dans le message de news:
403d06d4$0$22389$626a14ce@news.free.fr...
alors, il faut employer les grands moyens...
essaie d'utiliser cette fonction qui te dit si l'imprimante est libre :
Private Declare Function OpenPrinter Lib "winspool.drv" Alias
"OpenPrinterA"
(ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter
As
Long) As Long
Private Declare Function EnumJobs Lib "winspool.drv" Alias "EnumJobsA"
(ByVal hPrinter As Long, ByVal FirstJob As Long, ByVal NoJobs As Long,
ByVal
Level As Long, pJob As Any, ByVal cdBuf As Long, pcbNeeded As Long,
pcReturned As Long) As Long
Function printfini()
Dim imprimante As Long, zaza As Long, toto As Long
OpenPrinter "HP DeskJet 710C", imprimante, ByVal 0&
zaza = 0
EnumJobs imprimante, 0, 99, 1, ByVal 0&, 0, zaza, toto
ClosePrinter imprimante
printfini = True
If zaza > 0 Then printfini = False
End Function
pense à mettre le nom de ton imprimante (pas celui de la mienne !)
et dans ton sub, tu mets une boucle pour attendre la fin de l'impression :
Do While Not printfini
Loop
MsgBox "ça y est !"
j@c
http://jacxl.free.fr
"cmoietvous" <cmoietvousnospam@free.fr> a écrit dans le message de news:
SBX_b.26918$zm5.8513@nntpserver.swip.net...
Oui j'ai essayé mais cela ne fonctionne pas car busy est une propriété
pour
une opération de download et non pour l'impression!
ou bien, sans avoir besoin d'entrer le nom de l'imprimante :
Private Declare Function GetProfileString Lib "kernel32.dll" _ Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, _ ByVal lpDefault As String, ByVal lpReturnedString As String, _ ByVal nSize As Long) As Long Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" _ (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long Private Declare Function ClosePrinter Lib "winspool.drv" _ (ByVal hPrinter As Long) As Long Private Declare Function EnumJobs Lib "winspool.drv" _ Alias "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob As Long, _ ByVal NoJobs As Long, ByVal Level As Long, pJob As Any, ByVal cdBuf As Long, _ pcbNeeded As Long, pcReturned As Long) As Long
Function printfini() Dim nimpr As String * 254 Dim imprimante As Long, zaza As Long, toto As Long GetProfileString "windows", "device", ",,,", nimpr, 254 nom_imprimante = Left(nimpr, InStr(nimpr, ",") - 1) OpenPrinter nom_imprimante, imprimante, ByVal 0& zaza = 0 EnumJobs imprimante, 0, 99, 1, ByVal 0&, 0, zaza, toto ClosePrinter imprimante printfini = True If zaza > 0 Then printfini = False End Function
http://jacxl.free.fr
"" a écrit dans le message de news: 403d06d4$0$22389$
alors, il faut employer les grands moyens... essaie d'utiliser cette fonction qui te dit si l'imprimante est libre :
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA"
(ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As
Long) As Long Private Declare Function EnumJobs Lib "winspool.drv" Alias "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob As Long, ByVal NoJobs As Long, ByVal
Level As Long, pJob As Any, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
Function printfini() Dim imprimante As Long, zaza As Long, toto As Long OpenPrinter "HP DeskJet 710C", imprimante, ByVal 0& zaza = 0 EnumJobs imprimante, 0, 99, 1, ByVal 0&, 0, zaza, toto ClosePrinter imprimante printfini = True If zaza > 0 Then printfini = False End Function
pense à mettre le nom de ton imprimante (pas celui de la mienne !) et dans ton sub, tu mets une boucle pour attendre la fin de l'impression :
Do While Not printfini Loop MsgBox "ça y est !"
http://jacxl.free.fr
"cmoietvous" a écrit dans le message de news: SBX_b.26918$
Oui j'ai essayé mais cela ne fonctionne pas car busy est une propriété pour
une opération de download et non pour l'impression!