2017-09-20 1 views
2

J'ai un document MS Word qui génère un fichier Excel rempli avec des données d'une table dans le document Word. La version Excel de la table Word est destinée à être une liste de contrôle. En tant que tel, j'essaie d'ajouter des fonctionnalités à l'Excel généré pour le rendre plus utile. J'ai essayé d'ajouter la mise en forme conditionnelle (pour faire une ligne verte si la ligne est marquée complète) et la validation (ainsi une colonne Completed a une liste déroulante avec Oui ou Non). Je peux faire fonctionner les deux dans Excel, mais ne peut pas obtenir VBA à partir de Word pour ajouter la fonctionnalité à l'Excel généré.Excel Validation.Add ne fonctionne pas à partir de MS Word VBA

Dans les deux cas, la méthode .Add semble être à l'origine du problème. J'ai essayé 2 syntaxes de le faire:

With objNewExcel.Sheets(1).Range("e5").Validation 
    .Add Type:=xlValidateWholeNumber, _ 
     AlertStyle:= xlValidAlertStop, _ 
     Operator:=xlBetween, _ 
     Formula1:="5", _ 
     Formula2:="10" 
    .InputTitle = "Integers" 
    .ErrorTitle = "Integers" 
    .InputMessage = "Enter an integer from five to ten" 
    .ErrorMessage = "You must enter a number from five to ten" 
End With 

renvoie une erreur "excel erreur d'exécution '1004' défini par l'application ou une erreur définie objet" qui est pas utile

et

objNewExcel.Sheets(1).Range("e5").Validation.Add(xlValidateWholeNumber, xlValidAlertStop, xlBetween, "5", "10") 

Erreur de retour "Attendu: =". Quand je mets la Validation à une var cela me donne une erreur de type miss match. J'ai DIMed la var comme un objet.

Je ne peux pas non plus travailler avec MS Word VBA. Est-ce que quelqu'un sait comment référencer la méthode Excel .Add à partir de Word VBA?

Répondre

0

Avec l'aide d'un ami, j'ai pu modifier la seconde syntaxe pour fonctionner.

utilisant:

objNewExcel.Sheets(1).Range("e5").Validation.Add (xlValidateWholeNumber, xlValidAlertStop, xlBetween, "5", "10") 

VBA Word attend une valeur retournée. Si vous ajoutez "Call" au début de la ligne ou supprimez "(" et ")" de la méthode .Add, VBA sait qu'il n'y a pas de retour et cela fonctionne.

travail Syntaxe de:

objNewExcel.Sheets(1).Range("e5").Validation.Add xlValidateWholeNumber, xlValidAlertStop, xlBetween, "5", "10" 

et

Call objNewExcel.Sheets(1).Range("e5").Validation.Add (xlValidateWholeNumber, xlValidAlertStop, xlBetween, "5", "10")