Activer un fichier Word à partir d'une macro

Activer un fichier Word à partir d'une macro - VB/VBA/VBS - Programmation

Marsh Posté le 27-02-2014 à 11:43:27    

Bonjour,

 

Je suis dans un fichier1, et je dois ouvrir un fichier2 et le parcourir.

 

Voici mon code (présent dans une macro du fichier 1) :

Code :
  1. URL="C:\fichier2.doc"
  2. Dim WordApp As Object
  3. Dim WordDoc As Object
  4. Set WordApp = CreateObject("Word.Application" )
  5. Set WordDoc = WordApp.Documents.Open(URL)
  6. WordDoc.Activate
  7. WordDoc.Select
 

Ce code ne renvoie aucune erreur, mais il sélectionne le contenu du fichier1 et non du fichier2 :(
J'ai tenté plein de choses à base de Documents().Activate, mais sans aucun succès.

 

Pouvez-vous m'expliquer ce qui cloche ? :??:
Faut-il que je désactive le fichier1 avant, et si oui comment ?

Message cité 1 fois
Message édité par $temp le 27-02-2014 à 11:44:24
Reply

Marsh Posté le 27-02-2014 à 11:43:27   

Reply

Marsh Posté le 27-02-2014 à 14:33:24    

 
            Bonjour.

$temp a écrit :

Je suis dans un fichier1, et je dois ouvrir un fichier2 et le parcourir.


            Oui mais depuis quelle application ?
 
            Le souci serait logique depuis Word car c'est vraiment dommage d'en ouvrir un second ‼
 

Reply

Marsh Posté le 27-02-2014 à 14:48:08    

Aaaahhhh.... Je viens de comprendre que mon code demande à Word de rouvrir word en fait, d'où deux instances en même temps  [:sombrero67]
C'est ça ?

 

Mes recherches ont quasiment toutes été infructueuses. C'est le post d'un total débutant en macros qui a fini par me sauver (tout en me vexant un peu je l'avoue :o ). J'ai trouvé ça à l'instant.

 

J'ai juste mis du coup :

Code :
  1. ChangeFileOpenDirectory (chemin du fichier)
  2. Documents.Open FileName:= nomdufichier
 

Et donc ma macro fonctionne enfin.

 

Ca me contrarie légèrement, car j'aurais préféré que l'utilisateur saisisse tout d'un coup sur une seule ligne. Mais bon, là j'ai la flemme, donc il saisira les deux variables de lui même, j'ai mis deux TextBox.

 

Je n'avais pas envie de devoir galérer encore 1h pour trouver la formule Word permettant de trouver la première position du caractère "\" en partant de la droite pour faire le découpage de la chaine moi même. :o


Message édité par $temp le 27-02-2014 à 14:48:48
Reply

Marsh Posté le 27-02-2014 à 14:58:46    

 
            Pas besoin de changer de répertoire pour ouvrir un fichier !
 
            Sinon pour la chaine, c'est facile via les fonctions  Split  &  Ubound  …

Reply

Marsh Posté le 27-02-2014 à 15:14:59    

Marc L a écrit :

Pas besoin de changer de répertoire pour ouvrir un fichier !


J'ouvre un fichier qui existe déjà, et potentiellement ailleurs, du coup ça ne m'a pas semblé bizarre...
 
Cela dit, quand mes deux fichiers sont au meme endroit (ie posés sur le bureau), j'ai une erreur si je mets juste la ligne

Code :
  1. Documents.Open FileName:= nomdufichier


Il me dit qu'il ne trouve pas mon fichier.

Reply

Marsh Posté le 27-02-2014 à 15:31:37    

 
            Normal car le chemin d'accès d'un fichier est composé du disque local, du répertoire et sous répertoires,
 
            puis du nom et enfin de son extension comme par exemple  D:\Clients\Courriers\Relance.doc  …
 

Reply

Marsh Posté le 27-02-2014 à 16:57:45    

Du coup je ne comprends pas ce que signifie ton "Pas besoin de changer de répertoire pour ouvrir un fichier !".
 
Pour moi, je dois indiquer où se trouve mon fichier, c'est donc ce que fait mon code.
Je comprends ta réponse comme un : pas la peine de préciser, il part de l'endroit où est ton fichier d'origine (je pense un peu aux fameuses adresses relatives qu'on peut utiliser en HTML par exemple, avec des \..\dossier\sousdossier.
 
Or ça ne marche pas si je ne précise rien. Bref, je n'arrive pas à comprendre ta phrase (que j'ai citée au dessus).
 
M'enfin, peu importe, ça fonctionne.

Reply

Marsh Posté le 27-02-2014 à 17:04:03    

 
           La ligne  ChangeFileOpenDirectory  est inutile si l'accès au fichier est bien renseigné lors de l'ouverture …

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed