Je souhaite lancer une commande via le VBA d'Excel mais... cela ne
fonctionne pas.
Si je vais en ligne de commande et que je lance à la main:
D:\Convert2PDF.vbs D:\monficdoc
cela fonctionne bien et j'obtiens bien un fichier PDF (le vbs en question
provient de PDFCreator).
Mais si je passe par un script VBA:
fname = "D:\Convert2PDF.vbs D:\monficdoc"
shell(fname)
J'obtiens une erreur 5 : argument ou appel de procédure incorrect... :-/
J'ai également tenté d'utiliser ShellExecute mais... j'obtiens un code
retour 2. Et cela ne fonctionne pas non plus...
Public 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
Public Const SW_SHOWNORMAL = 1
pour ma part, j'utilise habituellement la forme suivante :
Dim wsh Set wsh = CreateObject("wscript.Shell") r = wsh.Run("C:DOCUME~1moiMESDOC~1DOSSIE~1temptest.vbs param1", 0, True)
Cordialement, Jean-Claude
isabelle
bonjour HD,
si tu as le logiciel Acrobat Distiller sur ton pc, tu pourrais utiliser ce qui suit:
Private Sub PsToPDF() ' fichier .PS est converti en .PDF ' Nécessite la référence à Acrobat Distiller ' http://www.adobe.com/support/downloads/detail.jsp?ftpIDW5 ' http://www.adobe.com/devnet/acrobat/pdfs/distiller_api_reference.pdf
Dim PSFileName As String Dim PDFFileName As String Dim FacFileName As String Dim myPDF As PdfDistiller
Printerold = Application.ActivePrinter FacFileName = "c:z1align" PSFileName = FacFileName & ".ps" ' Nom complet avec Extension ps PDFFileName = FacFileName & ".pdf" ' Nom complet transformé en pdf 'ParametreName = "c:Z1MesReglages.jopboptions" ' Nom complet Set myPDF = New PdfDistiller ' Création d'une instance Distiller ' myPDF.bSpoolJobs = 0
' Convert the postscript file to .PDF myPDF.FileToPDF PSFileName, PDFFileName, ParametreName
' Syntaxe plus complète, si l'on a défini son fichier d'options ' myPDF.FileToPDF PSFileName, PDFFileName, ParametreName
Do While Timer < Debut + 5 ' 5 secondes Loop
Set myPDF = Nothing ' voir remarque ci-dessus sur myPDF.bSpoolJobs = 1
'3._ Remettre l'imprimante par défaut Application.ActivePrinter = Printerold
End Sub
isabelle
Le 2011-02-28 10:18, HD a écrit :
Bonjour,
Je souhaite lancer une commande via le VBA d'Excel mais... cela ne fonctionne pas.
Si je vais en ligne de commande et que je lance à la main: D:Convert2PDF.vbs D:monficdoc cela fonctionne bien et j'obtiens bien un fichier PDF (le vbs en question provient de PDFCreator).
Mais si je passe par un script VBA: fname = "D:Convert2PDF.vbs D:monficdoc" shell(fname) J'obtiens une erreur 5 : argument ou appel de procédure incorrect... :-/
J'ai également tenté d'utiliser ShellExecute mais... j'obtiens un code retour 2. Et cela ne fonctionne pas non plus... Public 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 Public Const SW_SHOWNORMAL = 1
si tu as le logiciel Acrobat Distiller sur ton pc, tu pourrais utiliser
ce qui suit:
Private Sub PsToPDF()
' fichier .PS est converti en .PDF
' Nécessite la référence à Acrobat Distiller
' http://www.adobe.com/support/downloads/detail.jsp?ftpIDW5
' http://www.adobe.com/devnet/acrobat/pdfs/distiller_api_reference.pdf
Dim PSFileName As String
Dim PDFFileName As String
Dim FacFileName As String
Dim myPDF As PdfDistiller
Printerold = Application.ActivePrinter
FacFileName = "c:z1align"
PSFileName = FacFileName & ".ps" ' Nom complet avec Extension ps
PDFFileName = FacFileName & ".pdf" ' Nom complet transformé en pdf
'ParametreName = "c:Z1MesReglages.jopboptions" ' Nom complet
Set myPDF = New PdfDistiller ' Création d'une instance Distiller
'
myPDF.bSpoolJobs = 0
' Convert the postscript file to .PDF
myPDF.FileToPDF PSFileName, PDFFileName, ParametreName
' Syntaxe plus complète, si l'on a défini son fichier d'options
' myPDF.FileToPDF PSFileName, PDFFileName, ParametreName
Do While Timer < Debut + 5 ' 5 secondes
Loop
Set myPDF = Nothing ' voir remarque ci-dessus sur myPDF.bSpoolJobs = 1
'3._ Remettre l'imprimante par défaut
Application.ActivePrinter = Printerold
End Sub
isabelle
Le 2011-02-28 10:18, HD a écrit :
Bonjour,
Je souhaite lancer une commande via le VBA d'Excel mais... cela ne
fonctionne pas.
Si je vais en ligne de commande et que je lance à la main:
D:Convert2PDF.vbs D:monficdoc
cela fonctionne bien et j'obtiens bien un fichier PDF (le vbs en question
provient de PDFCreator).
Mais si je passe par un script VBA:
fname = "D:Convert2PDF.vbs D:monficdoc"
shell(fname)
J'obtiens une erreur 5 : argument ou appel de procédure incorrect... :-/
J'ai également tenté d'utiliser ShellExecute mais... j'obtiens un code
retour 2. Et cela ne fonctionne pas non plus...
Public 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
Public Const SW_SHOWNORMAL = 1
si tu as le logiciel Acrobat Distiller sur ton pc, tu pourrais utiliser ce qui suit:
Private Sub PsToPDF() ' fichier .PS est converti en .PDF ' Nécessite la référence à Acrobat Distiller ' http://www.adobe.com/support/downloads/detail.jsp?ftpIDW5 ' http://www.adobe.com/devnet/acrobat/pdfs/distiller_api_reference.pdf
Dim PSFileName As String Dim PDFFileName As String Dim FacFileName As String Dim myPDF As PdfDistiller
Printerold = Application.ActivePrinter FacFileName = "c:z1align" PSFileName = FacFileName & ".ps" ' Nom complet avec Extension ps PDFFileName = FacFileName & ".pdf" ' Nom complet transformé en pdf 'ParametreName = "c:Z1MesReglages.jopboptions" ' Nom complet Set myPDF = New PdfDistiller ' Création d'une instance Distiller ' myPDF.bSpoolJobs = 0
' Convert the postscript file to .PDF myPDF.FileToPDF PSFileName, PDFFileName, ParametreName
' Syntaxe plus complète, si l'on a défini son fichier d'options ' myPDF.FileToPDF PSFileName, PDFFileName, ParametreName
Do While Timer < Debut + 5 ' 5 secondes Loop
Set myPDF = Nothing ' voir remarque ci-dessus sur myPDF.bSpoolJobs = 1
'3._ Remettre l'imprimante par défaut Application.ActivePrinter = Printerold
End Sub
isabelle
Le 2011-02-28 10:18, HD a écrit :
Bonjour,
Je souhaite lancer une commande via le VBA d'Excel mais... cela ne fonctionne pas.
Si je vais en ligne de commande et que je lance à la main: D:Convert2PDF.vbs D:monficdoc cela fonctionne bien et j'obtiens bien un fichier PDF (le vbs en question provient de PDFCreator).
Mais si je passe par un script VBA: fname = "D:Convert2PDF.vbs D:monficdoc" shell(fname) J'obtiens une erreur 5 : argument ou appel de procédure incorrect... :-/
J'ai également tenté d'utiliser ShellExecute mais... j'obtiens un code retour 2. Et cela ne fonctionne pas non plus... Public 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 Public Const SW_SHOWNORMAL = 1