Pourquoi Shell ne Fonctionne-t-il Pas en VBScript Dans VS6 ?

Si vous avez jamais travaillé avec VBScript dans Visual Studio 6 (VS6), vous avez peut-être rencontré un obstacle frustrant : une erreur d'exécution de type mismatch lorsque vous essayez d’utiliser la commande Shell pour exécuter un programme externe. Cela peut être déroutant, surtout lorsque vous voulez tout simplement rationaliser vos tâches avec une commande simple. Alors, qu’est-ce qui se passe ? Pourquoi Shell ne fonctionne-t-il pas comme prévu ? Examinons cette question et explorons la solution étape par étape.

Le Problème

Dans votre code de macro, vous avez peut-être d’abord tapé quelque chose comme ceci :

shell("p4 open " + ActiveDocument.FullName)

Cependant, cela entraîne une erreur. La raison de la confusion réside dans les différences entre VBScript et Visual Basic (VB). Bien que les deux langages partagent des similitudes, il existe des distinctions significatives dans leur utilisation des objets et leur fonctionnalité.

Comprendre VBScript et l’Objet WScript

VBScript vs. Visual Basic

Comme souligné dans les discussions autour de ce problème, VBScript n’est pas la même chose que Visual Basic. L’essentiel est que VBScript a un ensemble limité d’objets intégrés. Par exemple, le seul objet intégré dans VBScript est l’objet WScript.

WScript.Echo "Hello, World!"

Cet objet WScript agit comme la racine de la hiérarchie du modèle d’objet Windows Script Host. Il fournit des fonctionnalités de base mais ne gère pas des opérations avancées comme l’exécution de programmes externes directement via la commande Shell.

Méthode CreateObject

Pour utiliser la plupart des autres objets disponibles dans VBScript, vous devez les créer en utilisant la méthode CreateObject. L’objet Shell est l’un de ces “autres” objets qui nécessite cette approche pour être exécuté.

La Solution : Utiliser WScript.Shell

Pour exécuter correctement un programme externe dans votre macro VS6, vous devez utiliser l’objet WScript.Shell. Voici comment le faire correctement :

Dim wshShell
Set wshShell = CreateObject("WScript.Shell")
strResult = wshShell.Run("p4 open " + ActiveDocument.FullName)

Décortiquer La Solution

  1. Déclarez une Variable : Vous commencez par déclarer une variable, par exemple, wshShell, pour contenir l’objet Shell.

  2. Créez l’Objet Shell : Utilisez Set wshShell = CreateObject("WScript.Shell") pour créer une instance de l’objet Shell.

  3. Exécutez la Commande : Utilisez la méthode wshShell.Run() pour exécuter votre commande désirée, qui dans ce cas est "p4 open " + ActiveDocument.FullName.

Conclusion

Bien que ces étapes supplémentaires puissent sembler inutiles au premier abord, l’utilisation de l’objet WScript.Shell via CreateObject est essentielle pour exécuter des applications externes en VBScript au sein de Visual Studio 6. Cette méthode est conforme à la manière dont VBScript est conçu et garantit que votre code fonctionne sans erreurs d’exécution.

En comprenant la distinction entre VBScript et Visual Basic, vous pouvez contourner ces défis et rationaliser votre expérience de codage. Si vous travaillez avec des macros, ces connaissances vous feront gagner du temps et éviteront des maux de tête à long terme.

Utiliser les bons objets améliore non seulement vos compétences en programmation mais booste également votre productivité. Bon codage !