2016-07-05 1 views
0

Cela peut être un long tronçon, mais ma recherche m'a conduit nulle part!Word VBA Website Scrapping

Nous avons actuellement lancé un nouveau système qui est basé sur le Web, en raison du coût, il y a un certain nombre de lettres qui sont basées sur le mot plutôt que sur le système.

J'ai cherché comment ces lettres peuvent être remplies automatiquement à partir de la mise au rebut de la bande. J'ai réussi à le faire en utilisant 'GetElementById'. Cependant, j'ai depuis constaté que les valeurs d'ID changeaient pour chacun des enregistrements client accédés, donc le code que j'ai écrit efficacement ne fonctionne qu'avec un seul client.

L'utilisation de noms de classe ou de toute autre variante ne fonctionne pas car seuls les ID étaient suffisamment uniques.

Y a-t-il une autre façon de penser? Le code HTML est structuré comme suit pour un élément de données particulier:

<div fieldref="PolicySummary.EffectiveDate" objectref="P379F514AC5994666A109BAB16FAF5A4F" id="f_P379F514AC5994666A109BAB16FAF5A4F8_2_1" name="f_P379F514AC5994666A109BAB16FAF5A4F8_2_1" class=" x-form-display-field">7/1/2016</div> 

Merci à l'avance

Répondre

0

Est-ce que l'élément div existe pas toujours au même endroit, à ce que vous pourriez ne pas se référer comme celui-ci

.getElementsByClassName(" x-form-display-field")(n) 

n étant l'apparition (première = 0 seconde = 1, etc.)

+0

Cela pourrait potentiellement fonctionner, ce qui est la meilleure façon de s'y prendre, y compris la (n)? Cela pourrait sembler une question stupide! – ChrisBrook

+0

Voir le code source et compter le nombre de fois que le nom de la classe apparaît, quand il est sur la div exacte, vous devez utiliser ce nombre moins 1. getElementsByClassName() retourne un tableau, donc le premier est – xn1

+0

Ok, donc les utilisateurs seront en utilisant IE8 donc je comprends que getElementsByClassName n'est pas supporté par IE8 mais querySelectorAll() est, est-ce que la même logique fonctionnerait ici? – ChrisBrook