2017-09-23 1 views
2

Travail sur un hôte Windows 7 Enterprise x64 avec Microsoft Office Professional Plus 2016 64 bits installé. Je souhaite créer le script Visual Basic (un fichier sur mon bureau Windows) qui lance Microsoft Excel, ouvre le fichier de classeur Excel à extension macro "Workbook.xlsm" et sélectionne/active la feuille de calcul "XYZ" dans ce classeur. Donc, je Woite le script VB suivant:Script Visual Basic pour ouvrir le classeur Excel dans une feuille de calcul spécifique avec des compléments activés

' File: test.vbs 
' Opens Excel workbook "Workbook.xlsm" to worksheet "XYZ" 
Set objXl = CreateObject("Excel.Application") 
Set ObjWb = objXl.Workbooks.Open("C:\Path\To\Workbook.xlsm") 
objXl.Goto ObjWb.Sheets("XYZ").Range("A1") 
objXl.Application.Visible = True 

Ce script lance avec succès Excel, ouvre le classeur spécifié et sélectionne la feuille de calcul spécifiée.

Toutefois, toutes les cellules de feuille de calcul contenant une formule qui appelle une ou plusieurs fonctions définies dans un module complémentaire sont toutes rompues; ces cellules contiennent toutes la valeur d'erreur #NAME?. Si je ferme et rouvre manuellement le classeur (sans utiliser le script), les cellules de feuille de calcul contenant une formule qui appelle une ou plusieurs fonctions définies dans un module complémentaire fonctionnent correctement. Donc je me demande comment modifier mon script Visual Basic pour qu'après le lancement d'Excel, l'ouverture du classeur et la sélection de la feuille de calcul souhaitée, les cellules de la feuille de travail du cahier puissent appeler avec succès les fonctions définies dans les modules complémentaires.

+0

Dans la dernière ligne, ne devrait pas vous écrire 'ObjWb. Sheets' au lieu de 'ObjWbSheets'? – Gurman

+0

Lorsque vous lancez Excel à l'aide de CreateObject, les compléments ne sont pas chargés. Pour plus d'informations, consultez la page suivante: https://support.microsoft.com/fr-fr/help/213489/add-ins-do-not-load-when -using-le-createobject-command-in-excel? spid = 2512 & sid = 63 –

+0

Merci de nous avoir fait remarquer que la faute de frappe @Gurman. (FWIW, cette faute de frappe n'est pas présente dans mon fichier source de script VB réel.) –

Répondre

2

Selon le commentaire de Tim Williams, cet article de Microsoft décrit ce problème et explique comment le résoudre:

Add-ins do not load when using the CreateObject command in Excel

' File: test.vbs 
' Opens Excel workbook "Workbook.xlsm" to worksheet "XYZ" 
Set objXL = CreateObject("Excel.Application") 
Set ObjWB = objXL.Workbooks.Open("C:\Path\To\Workbook.xlsm") 

' Open add-in file 'AddIn.xlam' 
objXL.Workbooks.Open ("C:\Path\To\AddIn.xlam") 

objXL.Goto ObjWB.Sheets("XYZ").Range("A1") 
objXL.Application.Visible = True 

' Maximize the window after it opens 
objXL.Application.WindowState = xlMaximized 

Set objWB = Nothing 
Set objXL = Nothing