Macro en Javascript

Signaler
Messages postés
4
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
18 avril 2009
-
Messages postés
4
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
18 avril 2009
-
Bonjour,

Je suis complètement débutant dans le développement et je suis un peu perdu. Je souhaite écrire un fichier en langage Javascript, exécuté depuis un logiciel de calcul scientifique, qui pourra réaliser les actions suivantes :

- Lancer Microsoft Excel
- Ouvrir le fichier .xls spécifier dans le fichier .js
- Lire des valeurs dans des cases du tableur sus mentionné (ligne X, colonne X d'une feuille de calcul).
- Coller les valeurs dans le logiciel de calcul scientifique.

Le logiciel de calcul est prévu pour exécuter des macros en Javascript.
J'en suis au début. J'utilise un PC sous Windows2000 avec Office 2000. J'ai récupéré sur un site internet le script suivant :

function OpenExcel()
 {
     var ExcelApp = new ActiveXObject("Excel.Application");
     ExcelApp.Application.Visible = true;
     ExcelApp.Workbooks.Open("D:\Bheritie\Projet\Proj_echangeur_bitubes\Proj_COMPOSANT\Mod_V04\Echangeur_bitubes_v3L.xls");
 }//end OpenExcel()

En exécutant la macro Javascript depuis le logiciel de calcul, rien ne se passe.

Si la partie Javascript est encapsulée dans une page HTML, il ya du progrès mais seul EXCEL est lancé, le fichier n'est par contre pas ouvert :

<HTML>
   ----

   ,
  
 

<script language="javascript">
function OpenExcel()
 {
     var ExcelApp = new ActiveXObject("Excel.Application");
     ExcelApp.Application.Visible = true;
     ExcelApp.Workbooks.Open("D:\Bheritie\A\Classeur1.xls");
 }//end OpenExcel()
</script>
</HTML>

au secours! Merci pour l'aide que vous pourrez m'apporter.

wbuser77

6 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
Bonjour,

>>- Lancer Microsoft Excel
>>- Ouvrir le fichier .xls spécifier dans le fichier .js
ça c'est fait à priori
>>- Lire des valeurs dans des cases du tableur sus mentionné (ligne X, colonne X d'une feuille de calcul).
>>- Coller les valeurs dans le logiciel de calcul scientifique.
ah ? et où cela ? rien n'est programmé pour cela ici dans ce qui est mis...

>>Le logiciel de calcul est prévu pour exécuter des macros en Javascript.
style word ou excel ou ... les produits office de windows quoi par exemple ... ?

Cordialement
Messages postés
4
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
18 avril 2009

Bonjour,

En fait, seule la version mise dans une page HTML fonctionne (lancement d'Excel + ouverture du fichier .xls). Et encore, en mettant le fichier à la racine du D (i.e. D:/). Si le chemin est plus long, cela ne fonctionne pas. J'ai testé avec "" de Windows ou "/" des chemins internet. Il doit y avoir une erreur de syntaxe. Je suis un complet néophyte.

La version purement Javascript (fichier .js - pas de code HTML) ne fonctionne pas. Quand j'essaie d'exécuter la macro depuis le logiciel de calcul, rien ne se passe. Aucun debugger ne s'ouvre d'ailleurs. J'aimerais bien que Microsoft Script Editor (MSE.exe sous Office2000) puisse s'ouvrir pour que je sache ce qui ne va pas.

Les actions de lire les valeurs dans le fichier Excel et de les coller ensuite dans un endroit qui va bien sont des choses qui restent à découvrir...

Le logiciel de calcul qui exploite les possibilités offertes par l'écriture de macros en Javascript (et VBS) est ANSYS WORKBENCH.

wbuser77
Messages postés
4
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
18 avril 2009

Re,

En complément, à propos de la lecture / écriture de valeurs. Il serait peut-être judicieux de créer un fichier intermédiaire les contenant, façon fichier input que WORKBENCH pourra lire ensuite.

wbusr77
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
le chemin :
ExcelApp.Workbooks.Open("D:\\Bheritie\\A\\Classeur1.xls"); ou
ExcelApp.Workbooks.Open("D:/Bheritie/A/Classeur1.xls");
si on prend ce que tu nous donnes, ça doit fonctionner

>>La version purement Javascript (fichier .js - pas de code HTML) ne fonctionne pas.
pas compris....
le fait de le mettre dans un .js ?  tu dois faire une erreur.
par exemple : c'est uniquement du javascript ! aucune balise
donc à la place de
<script language="javascript">
function OpenExcel()
 {   var ExcelApp = new ActiveXObject("Excel.Application");
     ExcelApp.Application.Visible = true;
     ExcelApp.Workbooks.Open("D:\\Bheritie\\A\\Classeur1.xls");
 }
</script>

an fait
<script language="javascript" src="c:\\toto.js"></script>
et dans c:\toto.js :

function OpenExcel()

 {   var ExcelApp = new ActiveXObject("Excel.Application");

     ExcelApp.Application.Visible = true;

     ExcelApp.Workbooks.Open("D:\\Bheritie\\A\\Classeur1.xls");

 }

>>Les actions de lire/écrire les valeurs dans le fichier Excel

var num=ExcelApp.ActiveSheet.cells.item(1,1); par exemple lit ligne 1, colonne 1
( on peut faire autrement )

exemple de copie de toute la page html ==> excel :
   
       

                    ----
Val1,
                123456,
                ------,
                --------,
            ----
Val2,
                123456,
                ------,
                --------,
            ----
Val3,
                123456,
                ------,
                --------,
           
       

    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

    BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

   

            <script type="text/javascript">
                            var textRange = document.body.createTextRange();
                            textRange.moveToElementText(divMain);
                            textRange.execCommand('Copy');
                            var oExcel = new ActiveXObject('Excel.Application');
                            var oWkBooks = oExcel.Workbooks.Add;
                            var oExcelSheet = oWkBooks.Worksheets(1);
                            oExcelSheet.Application.Visible = true;               
                            oExcelSheet.Activate();
                            oExcel.ActiveSheet.Range('A1').Select;
                            oExcel.ActiveCell.PasteSpecial(0,false,false);
                            oExcel.ActiveSheet.Cells.EntireColumn.AutoFit;
                            oExcel.ActiveSheet.Cells.EntireRow.AutoFit.AutoFit;
                            oExcel.ActiveSheet.Range('A1').Select;
            </script>
   
</html>

>>Quand j'essaie d'exécuter la macro depuis le logiciel de calcul, rien ne se passe
bah, si tu dois récupérer des cellules d'excell, si on ne les copie pas
depuis le html... ou le contaire ?
ta macro devrait prendre quoi ?
>>Il serait peut-être judicieux de créer un fichier intermédiaire les contenant,

je ne vois pas trop qui fait quoi en fait !

on a 3 choses : le html+le javascript (.js ou pas, c'est pareil ), excel, ton logiciel
quelles relations entre eux ?
 
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
maintenant créer un fichier, c'est là aussi possible.
Messages postés
4
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
18 avril 2009

Bonsoir,

Je résume. Normalement, il ne doit y avoir que 4 éléments :

- Le logiciel de calcul ANSYS WORKBENCH appelant un fichier javascript
- le fichier javascript proprement dit. Il lance Excel, ouvre un classeur Excel, lit des valeurs et les colle sans un fichier texte intermédiaire ou dans un espace prévu dans WORKBENCH (à voir).
- Excel. Pas grand chose à ajouter, on connaît plus ou moins ce tableur.
- Classeur Excel (fichier .xls) calculant des valeurs qui sont lues et récupérées via le script javascript.

Le fichier HTML est là pour faire un test et tenter de sortir du merdier (excusez moi pour cette familiarité).

En fait je veux utiliser une macro exclusivement en javascript (fichier .js). C'est le premier script script que j'ai écrit :

function OpenExcel()
 {
     var ExcelApp = new ActiveXObject("Excel.Application");
     ExcelApp.Application.Visible = true;
     ExcelApp.Workbooks.Open("D:\Bheritie\Projet\Proj_echangeur_bitubes\Proj_COMPOSANT\Mod_V04\Echangeur_bitubes_v3L.xls");
 }//end OpenExcel()

C'est tout ce qui est écrit dedans jusqu'à présent, pas de balises. Rien ne se passe à l'exécution du fichier .js. Il commence par function et se termine par une accolade + commentaire. Bon, il doit y avoir un pb de chemin pour ouvrir le fichier .xls mais de toute façon même Excel ne se lance pas.

Pour essayer d'en savoir plus, le script javascript a été mis dans une page HTML (d'où la présence de balises + quelques lignes de codes supplémentaire pour avoir un bouton "run"). Là, Excel se lance et le fichier .xls s'ouvre si je mets ce dernier dans "D:/".

Comme je ne suis pas à mon bureau ce week-end, j'espère tester les modifications suggérées la semaine qui vient.
Je vais étudier le script de lecture / écriture.

En tout cas, merci pour les infos .

wbuser77