Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] Shell ne fonctionne pas..

2 réponses
Avatar
HD
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

fname = "D:\Convert2PDF.vbs D:\monficdoc"
RetVal = ShellExecute(hwnd, "Open", fname, ByVal 0&, 0&, SW_Normal)

Merci d'avance pour votre aide
--
@+
HD

2 réponses

Avatar
Jean-Claude
Bonjour,

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
Avatar
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

fname = "D:Convert2PDF.vbs D:monficdoc"
RetVal = ShellExecute(hwnd, "Open", fname, ByVal 0&, 0&, SW_Normal)

Merci d'avance pour votre aide