2014-07-17 7 views
0

ne peut pas passer la valeur de la variable à un fichier batch:Passe valeur variable fichier batch

code VBA exécuté lorsque cliqué sur un bouton de formulaire Access 2007.

Private Sub OpenWB(var1 As String) 
    Dim RetVal 
    RetVal = Shell("S:\WildlifeHealth\Idaho\Incoming\test.bat var1", vbNormalFocus) 
End Sub 

code de sous routine qui appelle OpenWB:

idahofile = "S:\WildlifeHealth\Idaho\Incoming\test.xls” 
Call OpenWB(idahofile) 

fichier test.bat:

Call %1 

retours « var1 » au lieu de « S: \ WildlifeHealth \ Idaho \ Incoming \ test.xls »

Si test.bat fichier:

Call S:\WildlifeHealth\Idaho\Incoming\test.xls, file opens. 

Alors, comment puis-je passer la valeur de var1 au lieu du nom var1.

J'essaye de trouver un travail autour d'Access en gardant un processus d'excel fonctionnant dans la fenêtre de processus après que l'utilisateur ferme Excel. Il n'est pas fermé par programmation via VBA. Je pensais que si je pouvais passer le chemin d'accès qui a été sélectionné dans une boîte de dialogue dans Access à un fichier batch et l'ouvrir là (donc pas à partir d'Access mais la ligne de commande), mon problème serait résolu. Mais hélas, je n'arrive pas à passer la valeur de la variable.

Des idées pour quelqu'un?

Peut-être existe-t-il un autre langage de programmation pouvant résoudre ce problème?

Répondre

2

Avez-vous essayé de remplacer ceci:

"S:\WildlifeHealth\Idaho\Incoming\test.bat var1" 

avec ceci:

"S:\WildlifeHealth\Idaho\Incoming\test.bat " & var1 

dans la fonction Shell de votre OpenWB sous?

Pour comprendre ce qui se passe, votre code d'origine construisait la commande dans un littéral de chaîne, c'est-à-dire une chaîne fixe. Donc, il semblait que vous vouliez vraiment passer l'argument appelé var1. En réalité, ce que vous vouliez faire est remplacer la valeur de var1 avec le paramètre à votre sous appelé var1. Cela signifie que vous vouliez construire votre commande batch au moment de l'exécution, ce qui signifie que vous deviez ajouter la valeur fournie de var1 au fichier batch. Par conséquent, votre code d'origine codait en dur var1 en tant que paramètre alors que le code mis à jour s'ajoute quelle que soit la valeur d'exécution de var1 au fichier de commandes en tant que paramètre.

+0

Oui! Parce que je veux apprendre: pourquoi cela a-t-il fonctionné? De plus, j'ai changé "call" en "start" dans le fichier batch pour que la fenêtre de batch se ferme après l'ouverture de la feuille de calcul. Merci. – user12059

+0

Cela a du sens. J'apprécie que vous me fournissiez un moment d'apprentissage. :-) – user12059

+0

@ user12059: Pas d'inquiétude, c'est mon plaisir. – djikay

Questions connexes