J'espère qu'un expert VB/VBA pourra m'aider. Considérez ce qui suit: L'utilisateur ouvre un document dans Word 2003 et dans la macro Normal.dot AutoOpen
, nous examinons document en cours et si il a été ouvert en cliquant sur un lien sur une page Web et répond à certaines autres applications spécifiques critères, fermer le flux continu « copie » et ouvrez le document source (qui se trouve sur un lecteur partagé, nous pouvons supposer que l'utilisateur a accès à):Ouverture/activation de documents Word dans une macro VBA
Documents.Open origDoc
Documents(ActiveDocument.FullName).Close SaveChanges:=wdDoNotSaveChanges
Documents(origDoc).Activate
With ActiveDocument
''# Do work
End With
Ma pensée était que je devais appeler Activate
pour faire en sorte que l'original document était le ActiveDocument
, mais j'obtiens une erreur 4160 'Nom de fichier incorrect' sur l'appel .Activate
. Si je commente l'appel à .Activate
, il apparaît que ActiveDocument
est défini sur le document origDoc, même si d'autres documents sont déjà ouverts (je ne suis pas sûr de la manière dont la collection de documents est gérée, et comment Word détermine la suivante ActiveDocument
si vous fermez le ActiveDocument en cours par programmation)
Ainsi, appeler .Open
sur un document définit explicitement le document comme ActiveDocument
? En outre, l'appel .Activate
sur le document déjà actif provoque une erreur?
Je n'ai pas vraiment été en mesure de trouver beaucoup de documentation à ce sujet, alors merci d'avance pour toutes suggestions et idées!
Vous avez probablement géré la copie en flux du document comme ActiveDocument dans votre code. Il vaudrait beaucoup mieux assigner cet objet document à une variable au début de votre code et utiliser votre variable dans le reste du code. Comme d'autres l'ont souligné, vous fermez probablement la mauvaise version du document dans la deuxième ligne de code. Aussi, il serait sage d'assigner l'objet document "original" à une variable quand vous l'ouvrez. – robartsd