OVH Cloud OVH Cloud

Création d'un fichier vbs

4 réponses
Avatar
David D.
Bonjour,

A partir d'un module vba access, je voudrais créer un fichier vbs à exécuter
ultérieurement. Ce fichier doit être composé d'une dizaine de ligne de codes.
Ces lignes de codes dépendent de valeurs se trouvant dans différentes tables.
Je procède de la façon suivante:
Shell "Echo Code1 >c:\monfichier.vbs"
Shell "Echo Code2 >>c:\monfichier.vbs"
Shell "Echo Code3 >>c:\monfichier.vbs"
...
Malheureusement, avec cette méthode, les lignes de codes ne sont pas
toujours copiées dans le bon ordre au sein de mon fichier.

Avez-vous une meilleure idée? Je souhaiterais à priori ne pas utiliser de
table spécifique pour exporter ce code vers mon fichier vbs.

D'avance merci.

4 réponses

Avatar
Raymond [mvp]
Bonjour.

exemple de création de fichier vbs:

Private Sub Commande0_Click()
If Not SauverEnFichier("Echo Code1", "c:monfichier.vbs") Then MsgBox
"erreur création...."
If Not SauverEnFichier("Echo Code2", "c:monfichier.vbs") Then MsgBox
"erreur création...."
If Not SauverEnFichier("Echo Code3", "c:monfichier.vbs") Then MsgBox
"erreur création...."
If Not SauverEnFichier("Echo Code4", "c:monfichier.vbs") Then MsgBox
"erreur création...."
End Sub


Public Function SauverEnFichier(Source As String, _
Nom_Fichier As String) As Boolean
Dim intFileNumber As Integer
On Error GoTo SaveString_Err
SauverEnFichier = True

If Len(Source) > 0 And InStr(Nom_Fichier, ".vbs") > 0 Then
If InStr(Nom_Fichier, ":") = 0 Or InStr(Nom_Fichier, "") = 0
Then
SauverEnFichier = False
Else
intFileNumber = FreeFile
Open Nom_Fichier For Append As intFileNumber
Print #intFileNumber, Source & vbCrLf;
Close intFileNumber
SauverEnFichier = True
End If
Else
SauverEnFichier = False
End If

SaveString_End:
Exit Function

SaveString_Err:
MsgBox Err.Description, vbCritical & vbOKOnly, _
"Error Number " & Err.Number & " Occurred"
Resume SaveString_End
End Function


remettre en ligne les commandes car certaines dépassent la largeur maxi du
message.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"David D." a écrit dans le message de
news:
Bonjour,

A partir d'un module vba access, je voudrais créer un fichier vbs à
exécuter
ultérieurement. Ce fichier doit être composé d'une dizaine de ligne de
codes.
Ces lignes de codes dépendent de valeurs se trouvant dans différentes
tables.
Je procède de la façon suivante:
Shell "Echo Code1 >c:monfichier.vbs"
Shell "Echo Code2 >>c:monfichier.vbs"
Shell "Echo Code3 >>c:monfichier.vbs"
...
Malheureusement, avec cette méthode, les lignes de codes ne sont pas
toujours copiées dans le bon ordre au sein de mon fichier.

Avez-vous une meilleure idée? Je souhaiterais à priori ne pas utiliser de
table spécifique pour exporter ce code vers mon fichier vbs.

D'avance merci.




Avatar
David D.
Merci Raymond. C'est exactement ce dont j'avais besoin.
Avatar
David D.
A propos, si je n'abuse pas, j'aimerais aussi connaître la solution à un
autre problème expliqué ci-dessous. Lorsque je lance une commande de type
shell, est-il possible que le statement suivant ne soi exécuté que lorsque la
commande initiée par le shell soit terminée? Si pas, existe-t-il en vba une
sorte de pause (en secondes par exemple)?

D'avance merci,
David D.
Avatar
Raymond [mvp]
il faut passer par une api que tu trouveras sur la page:
http://officesystem.access.free.fr/apishellwait.htm


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"David D." a écrit dans le message de
news:
A propos, si je n'abuse pas, j'aimerais aussi connaître la solution à un
autre problème expliqué ci-dessous. Lorsque je lance une commande de type
shell, est-il possible que le statement suivant ne soi exécuté que lorsque
la
commande initiée par le shell soit terminée? Si pas, existe-t-il en vba
une
sorte de pause (en secondes par exemple)?

D'avance merci,
David D.