J'ai une macro VBA sur Excel 2013 qui génère un rapport Excel distinct. Dans ce rapport Excel créé, je voudrais éteindre les grilles.
Le seul élément de code que je rencontre pour que cela se produise est comme ci-dessous p> Cependant, cette excellente est générée dans l'arrière-plan, c'est-à-dire p> ce qui signifie que ce rapport n'est pas l'actifwindow. Existe-t-il une solution alternative d'éteindre les grilles sans utiliser l'objet ActiveWindow? P> P>
3 Réponses :
L'ActiveWindow est membre de la collection Windows Objects. Comme pour toute collection, reportez-vous simplement à la fenêtre réelle par son nom plutôt qu'en spécifiant la fenêtre active. par exemple
Désolé @tim, indice hors de portée. Ça XLS n'est pas ouvert à cause de l'AppObject.Visible = False si cela a un sens.
J'aurais besoin de voir plus de code. Jusqu'à présent, le seul code DIM est un objet qui le définit alors invisible. Gradation, ce n'est pas la même chose que la création. COMIINTN vient de poster du code pour boucler à travers toutes les fenêtres, mais elle échouera jusqu'à ce qu'un classeur soit réellement créé (que nous verrions dans plus de votre code).
@Tim - donc le classeur en tant que paramètre. ;-)
Si vous avez une référence au classeur, vous pouvez simplement itérer sur toutes les fenêtres de sa collection. Si l'application n'est pas visible, vous ne devez obtenir que 1, mais il est plus sûr que d'essayer d'essayer un code dur un index: Notez que cela définira Changer l'affichage sur la feuille de calcul active dans le classeur de travail. - Pourquoi c'est une propriété de la fenêtre et non la feuille de calcul est au-delà de moi. p> Merci au lien que @IM a partagé, je Réalisé que j'avais complètement espacé de la collection code> feuille code>. Cela devrait désactiver les lignes de grille pour une feuille de calcul arbitraire code> objet: p>
Dem Trickeh Paramètres! xD mais sérieusement. La documentation MSDN mentionne que les feuilles sont un enfant de Windows. M. Excel a une belle démo de ce qui peut venir de deux fenêtres pour le même classeur. J'essaie d'envelopper ma tête autour d'elle plus.
@Tim - lien intéressant. Je traite avec excel.windows code> si rarement j'ai complètement oublié la collection code> coteviews code>. Voir la modification.
@ComIntern Fantastic, votre solution a fonctionné. Vraiment bizarre comment la hiérarchie est-elle - cependant a résolu mon problème.
Nous pouvons le faire comme "comintern" suggéré ou activant les feuilles recherchées pour exécuter une ligne de code adéquate dans une boucle.
J'ai essayé le code posté ci-dessus de plusieurs manières et je pose l'extrait qui a fonctionné le meilleur pour moi: Tout rétroaction est très accueilli p> p>
actifwindow code> etappobject.activewindow code> est la même chose - vous n'avez tout simplement pas besoin de le qualifier dans son propre objet d'application.Selon Ce , essayez
Windows ("Book1 .xls "). displaygridlines = false code>.Désolé gars, Windows ("FileName.xls") me donne l'indieur hors limites. Ça XLS n'est pas ouvert à cause de l'AppObject.Visible = False si cela a un sens.
Avez-vous une référence au classeur?
@Cominter oui je fais. J'ai une référence aux feuilles, au classeur et à l'objet d'application.