IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

comment executer du Visual Basic depuis Java?


Sujet :

Entrée/Sortie Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Par défaut comment executer du Visual Basic depuis Java?
    Bonjour,

    Je suis nouveau sur ce forum et debutant en Java.
    (Je ne poste peut etre pas mon TOPIC dans la bonne rubrique donc si c'est le cas, merci de bien vouloir me corriger.)

    Voici mon probleme. dans le cadre de mon stage de fin d'etude, je dois realiser un programme en Visual Basic capable de recuperer les donnees contenu dans des "champs de textes" sur un document Word.

    Ensuite je dois realiser un programme Java qui doit lancer l'execution de mon Visual Basic pour recuperer le contenu de mes variables, puis les ranger dans une classe-objet.

    Je m'explique. Les champs de texte du Document MS-Word sont en entete du doc et contiennent les informations qui permettent d'identifier le doc (nom, date de creation, numero de serie, ...)

    Au final, je dois pouvoir obtenir un objet qui contient l'ensemble de ces infos.

    Ma question est donc la suite, vous l'avez lu dans le titre :
    - Comment executer du Visual Basic depuis Java?
    - Y a-t-il une manip particuliere a faire pour faire passer le contenu d'une variable VB vers une variable Java?

    Merci d'avance a tout ceux qui pourront me renseigner ou me donner des pistes.

    @+

    (p.s : Je ne suis pas obligé de passer par Visual Basic, c'est mon tuteur de stage qui me l'a suggere, donc si vous connaissez un moyen pour recuperer le contenu des "champs de texte" directement avec Java, je suis preneur aussi )

  2. #2
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Par défaut
    Oula, c'est bien mort ici !!

    Je vous ai fait peur, j'ai l'impression.
    Bon, avec de la perseverance on arrive toujours a tout, comme dit le proverbe.
    Tout ca pour dire que j'ai trouvé tout seul comment faire. J'ai cree un fichier "run.bat" a partir duquel j'execute mon Visual Basic.

    RUN.BAT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    wscript ExtractDCR.vbs
    pause
    Et pour recuperer le contenu de mes champs de texte sous Java, J'ai imaginé une combine. Je cree un fichier texte depuis VBS et j'y ecrire les donnees de mes champs de texte (mon fichier texte se nomme "Temp.txt"). Ainsi je n'ai plus besoin de lire mes variables VBS, sous Java. Il me suffit de les recuperer dans le fichier texte.


    Mon Script Visual Basic :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Call ExtractDCR() Sub ExtractDCR() Dim AppWord
    Dim fso
    Dim textFile
    Dim fieldName1, fieldName2
    Dim PrjC1, PrjC2
     
     
    Set AppWord = Wscript.CreateObject("Word.Application") 
    Set fso = Wscript.CreateObject("Scripting.FileSystemObject") 
    ' Set textFile = fso.OpenTextFile(".\Temp.txt",2,True) 
    Set textFile = fso.CreateTextFile(".\Temp.txt",True)
     
    With AppWord.Visible = False 
        .ScreenUpdating = False 
        .DisplayAlerts = False 
        .Documents.Open("C:\FichierMSWord.doc") 
    End With 
    '/****************************************/
    '/* bookmarks declartion */ 
    '/****************************************/ 
    fieldName1 = "Text1" fieldName2 = "Text2" 
    '/********************************/
    '/* read Bookmarks */ 
    '/********************************/ 
    PrjC1 = AppWord.ActiveDocument.Bookmarks(fieldName1).Range.Text PrjC2 = AppWord.ActiveDocument.Bookmarks(fieldName2).Range.Text 
    '/********************************/ 
    '/* write in textfile */ 
    '/********************************/ 
    textFile.Write("ProjectCode= " & PrjC1 & PrjC2 & vbcrlf) 
    'textFile.WriteLine(PrjC1) 
    'textFile.WriteLine(PrjC2) 
    textFile.Close 
    AppWord.Documents.Close(False) 
    AppWord.Quit() 
    Set AppWord = Nothing 
    Set textFile = Nothing 
    Set fso = Nothing 
    End Sub

    Seulement voila, je rencontre un autre probeme. Pour l'instant, je suis en phase de test et je me contente simplement de lire le contenu du fichier Temp.txt (pour recuperer les donnees qui m'interesse, je verrai plus tard)

    Seulement lorsque je lance mon programme Java, ce fichier n'existe pas encore. Il faut que j'execute 2 fois le programme pour avoir un resultat.
    (une 1ere fois pour creer le fichier Temp.txt, et une 2eme pour le lire)

    La solution ce serait que mon programme Java fasse une pause le temps que le VB Script est fini de s'executer. J'ai pensé à une boucle "while" mais il ne se passe rien.

    Mon programme Java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    import java.io.*;
     
    public class ReadFile {
        public static void main(String[] args){
            String character="";
            String thefile ="Temp.txt";
     
     
            /** Execute VBS **/    
     
        if (thefile == null){    
     
            try
            {
            Runtime runtime = Runtime.getRuntime();
            runtime.exec(new String[] { "C:\\run.bat" } );
            }
            catch (IOException e)
            {
            System.out.println(e);
            }
     
        }    
     
            /** the process has to do a break    **/
     
     
            while(thefile == null)        
            {
                //nothing    
            }
     
     
     
            /** Read text file : Temp.txt **/    
            try{
                InputStream ips=new FileInputStream(thefile); 
                InputStreamReader ipsr=new InputStreamReader(ips);
                BufferedReader br=new BufferedReader(ipsr);
                String line;
                while ((line=br.readLine())!=null){
                    System.out.println(line);
                    character+=line+"\n";
                }
                br.close(); 
            }        
            catch (Exception e){
                System.out.println(e.toString());
            }
     
        }
    }
    Quelqu'un a une idee?
    Merci d'avance !!!

    p.s : SVP, j'ai vraiment besoin d'un coup de main.
    Meme un : <<Je ne sais pas, mais je pense que tu pourrais tenter ca...>> m'irait tres bien.

  3. #3
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Pourquoi ne pas exécuter directement la commande "wscript ExtractDCR.vbs" via la méthode Runtime.exec (attention, il faut peut-être utiliser la commande cmd /C) ?
    Pour le problème de fichier pas encore créé, essaye d'attendre la fin de l'exécution du script avec la méthode waitFor() de la classe Process.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String[] cmdLine = { "wscript", "ExtractDCR.vbs"};
    // ou peut-être : { "cmd", "/C", "wscript", "ExtractDCR.vbs"};
    Process process = Runtime.getRuntime().exec(cmdLine);
    process.getInputStream().close();
    process.getErrorStream().close();
    process.waitFor();
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Par défaut
    Ca marche comme sur des roulettes!!! beaucoup

    (n.b : mais ne pas oublier d'ajouter throws InterruptedException dans le main pour que ça fonctionne.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static void main(String[] args)throws InterruptedException{
     
    //blablabla
     
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/07/2012, 09h02
  2. executer du PL/SQL depuis JAVA
    Par organik19 dans le forum JDBC
    Réponses: 8
    Dernier message: 04/07/2008, 11h00
  3. comment executer une macro excel depuis page asp ?
    Par auboulot909 dans le forum ASP
    Réponses: 12
    Dernier message: 10/01/2008, 19h26
  4. Transmettre des données à un executable via visual basic
    Par kantelise dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/12/2005, 08h59
  5. Interroger un programme en Visual Basic depuis Access
    Par vciofolo dans le forum VBA Access
    Réponses: 3
    Dernier message: 27/09/2005, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo