Comment ouvrir une version spécifique de Word 2007/2010 dans Excel
J'ai Word 2007 et 2010 est installé. - Je besoin pour ouvrir Word à partir d'Excel, mais j'ai besoin de spécifier quelle version je besoin pour ouvrir dans VBA.
J'ai essayé la liaison tardive
Dim wordApp2007 As Object
Dim wordApp2010 As Object
Set wordApp2007 = CreateObject("Word.Application.12")
wordApp2007.Visible = True
Set wordApp2010 = CreateObject("Word.Application.14")
wordApp2010.Visible = True
mais à la fois de l'ouverture de Word 2010
J'ai aussi essayé la liaison anticipée par à l'aide de
Dim wordApp As Word.Application
Set wordApp2007 = New Word.Application
wordApp2007.Visible = True
et la définition des références à la Parole 12.0 object model mais cela ouvre Word 2010
Si j'enregistre chaque version de Word à l'aide
"C:\Program Files\Microsoft Office\Office12\WINWORD.EXE" /regserver
"C:\Program Files\Microsoft Office\Office14\WINWORD.EXE" /regserver
puis la version enregistrée s'ouvre mais je ne peux pas ouvrir ouvrir les non-inscrits.
N'importe qui peut aider et me montrer comment ouvrir une version de Word dans Excel en utilisant VBA?
Merci
Edit: Exemple de code....
Option Explicit
Dim wordApp2007 As Word.Application
Sub Word_InfoEarly()
'early binding
Set wordApp2007 = New Word.Application
wordApp2007.Visible = True
'other Stuff
Stop
wordApp2007.Quit
Set wordApp2007 = Nothing
End Sub
Sub Word_InfoLate()
Dim wordApp2007 As Object
Dim wordApp2010 As Object
Set wordApp2007 = CreateObject("Word.Application.12")
wordApp2007.Visible = True
Set wordApp2010 = CreateObject("Word.Application.14")
wordApp2010.Visible = True
'other Stuff
Stop
wordApp2007.Quit
Set wordApp2007 = Nothing
wordApp2010.Quit
Set wordApp2010 = Nothing
End Sub
source d'informationauteur user3357963
Vous devez vous connecter pour publier un commentaire.
C'est un travail autour de:
Vous aussi, vous avez besoin de tester si une version précédente de word est ouvert, ou utiliser autre chose qu'une base
GetObject
pour activer la fenêtre, sinon il n'y a aucune garantie qu'il va obtenir la bonne version.L'autre moyen serait de passer le nom du document dans le
Shell
de commande, puisGetObject
pourrait être appelée avec le nom du documentCela peut expliquer pourquoi le code fonctionne et d'autres fois pas.
Mon observation sur la situation de la commande
de travail ou pas sur votre ordinateur, c'est que c'est une fonction de la dernière mise à jour que vous obtenez à partir de Microsoft.
Pourquoi je crois que c':
J'ai une application qui convertit un fichier texte en un document Word pour la rétro-compatibilité avec certaines applications existantes. Le meilleur plan comprend l'utilisation d'une version de Word similaire à la version de l'héritage des applications ont été conçues avec. En conséquence, j'ai cherché sur la façon de lancer une version antérieure de Word, par opposition à la valeur par défaut en proposant sur mon ordinateur qui est Word 2010.
La solution de noter dans cette discussion, la chaîne a fourni la réponse à ma question. (Merci de Débordement de Pile contributeurs!) Je voulais utiliser Word XP, j'ai donc regardé mes répertoires et a observé que Word XP (aka Word 2002) est un membre d'Office 10, j'ai donc créé la commande
et mon programme lancé Word 2002 et que le monde était un endroit heureux.
Sur le weekened, j'ai eu une mise à jour de mon ordinateur. Je contrôle les mises à jour via une appli qui me donne le contrôle sur le moment où les mises à jour se produisent, tels que je peux observer les changements à ma configuration. Ce matin (9/30/13) je me suis tourné sur un ordinateur qui a eu une mise à jour de Word. Je ne sais pas ce jusqu'à ce que après j'avais fait un run de mon appli de la semaine dernière. L'application fonctionnait bien et invoqué Word 2002 comme prévu.
Mais j'ai eu la bannière de la page m'informant d'un Mot 2010 mise à jour a été l'installation elle-même.
Ensuite, j'ai couru à l'application qui a si bien fonctionné pour moi la semaine dernière et une fois aujourd'hui. Maintenant, après la mise à jour de Word (tout de suite après!), le même code maintenant lance Word 2010, malgré le fait que la ligne de commande en invoquant Word 2002 n'a pas changé.
Cela semble une preuve solide qu'une mise à jour de Microsoft modifié les paramètres que précédemment autorisé le code VB pour fonctionner comme prévu. Cela pourrait être un bon élément pour l'amener à l'attention de Microsoft afin de voir si nous pouvons obtenir ce point stabilisé dans la suite des packages de mise à jour pour permettre la cohérence du comportement dans les futures versions.
J'espère que cela est utile,
JeffK
C'est un VB.NET solution:
C'est un peu intimidant pour certains, mais il peut y avoir une modification de registre qui peut résoudre ce problème.
Je ne peux pas tester car je n'ai qu'une version de MS Office disponible pour moi, cependant, les versions précédentes ont encore des clés de registre.
J'ai trouvé la version 2007 de Word dans le registre, et c'est l'emplacement par défaut est C:\program Files\Microsoft Office\Office14\WINWORD.EXE" ce qui indique que les anciennes versions de Word sont inscrits à la version la plus récente de l'emplacement d'installation, comme c'est par défaut.
Ce que vous pourriez être en mesure de faire est de naviguer jusqu'à l'emplacement de registre
Changement de la clé (par Défaut) lire "C:\program Files\Microsoft Office\Office12\WINWORD.EXE" /n "%1"
En théorie, à chaque fois que
est appelé il peut sonder le registre pour l'emplacement de l'exécutable, et trouver le bon chemin.
J'ai eu un problème similaire, et je pensais m'en détail mon expérience pour ceux qui par hasard sur ce sujet dans le futur.
Dans ma situation, j'ai eu un Powerpoint macro qui était censé ouvrir un fichier boîte de dialogue permettant à l'utilisateur de sélectionner certains fichiers Excel et ensuite de créer des tableaux de données; je n'ai eu aucun problème avec elle jusqu'à ce que j'ai récemment installé Excel 2003. Maintenant, Powerpoint a été l'ouverture d'un fichier Excel 2003 dialogue, ce qui poserait des erreurs lorsque vous essayez de sélectionner un *.fichier xlsx. Il n'avait pas d'importance, si j'ai utilisé
Excel.Application.10
ouExcel.Application.14
dans mon code pour créer l'objet Excel, on a toujours un fichier Excel 2003 boîte de dialogue.J'ai remarqué dans l'Explorateur *.xlsx fichiers ont été mis à être ouvert dans Excel 2010 et *.xls fichiers ont été mis à être ouvert dans Excel 2003. J'ai essayé de façon habituelle pour réinitialiser *.les fichiers xls à être ouvert en 2010, en vain. J'ai fini par supprimer la clé de registre et réparer Office 2010. Maintenant que tous les fichiers Excel ouverts en 2010, mon problème a été résolu.
Je sais que mon problème était un peu différente de la vôtre, mais je pense que mon expérience pourrait aider à mener à une solution. Je pense que toute solution sera à la fin s'appuyant sur certains de modification du registre.
J'ai perdu une demi-journée sur ce, et souhaitez aider à empêcher les autres de faire de même! Je suis sous Windows 7 et Office 2013 et 2010 sur le même ordinateur portable. Je voulais obtenir l'Accès VBA pour ouvrir une ancienne version de Word, Word 2013 call-outs sont d'impression avec une épaisseur des bordures noires.
Avoir essayé des tas de variantes, voici mon code qui a travaillé:
Je ne peux pas obtenir de la SORTE éditeur de code pour afficher correctement, mais le fait de copier et de coller devrait fonctionner.