• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

hyperlink controleren

Status
Niet open voor verdere reacties.

frenske1964

Gebruiker
Lid geworden
3 dec 2007
Berichten
25
Ik heb op het werk een excelbestand gekregen, waarbij in kolom a een tekeningnummer staat en in kolom b een hyperlink naar het tif-bestand van de tekening.

Is er een mogelijkheid om via een macro te controleren of aan de hyperlink ook werkelijk een bestand is gekoppeld?

Dit omdat er per excelbestand circa 5000 hyperlinks te controleren zijn.

Opzet is dat de macro kijkt of de hyperlink actief is, en zo niet dan in kolom c een x zet.

bij voorbaat dank
 
Frenske 1964, Zet deze code in de VBE-module van de sheet waar je het onderzoek wilt doen.
Code:
Sub KloptHyperlink()
Dim c As Range
Dim lFiles As Long, lTeller As Long, lFout As Long
    
    lFiles = Selection.Rows.Count
    
    For Each c In Selection
        lTeller = lTeller + 1
        Application.StatusBar = "Controle van bestand " & lTeller & " van totaal " & lFiles & " bestanden..."
        If Len(Dir(c.Hyperlinks(1).Address)) = 0 Then
            c.Offset(, [B]1[/B]).Value = "X"
            lFout = lFout + 1
        End If
    Next c

    MsgBox "Totaal zijn " & lFout & " hyperlinks van de " & lTeller & " onjuist!", vbOKOnly, "Aantal Fout"

    Application.StatusBar = ""

End Sub
Selecteer vervolgens de cellen van kolom B waar de hyperlinks in staan en laat de code lopen. Ik heb geen flauw idee hoelang dit gaat duren met 5000 te onderzoeken hyperlinks dus begin er 'ns met een stuk of 100. Als dat wel gaat kan je besluiten om het bereik te vergroten.
In de grijze 'status regel' aan de onderkant van het venster kan je trouwens volgen bij 'welke regel van de hoeveel regels' de controle is.

Groet, Leo

P.s. het is wel ff belangrijk dat je ZEKER weet dat alle cellen een hyperlink bevatten. Ik heb namelijk in de gauwigheid géén foutafhandeling geschreven!
 
Laatst bewerkt:
Beste Leo,

In eerste instantie werkte de code goed, maar na meerdere test-runs gaf hij plotseling aan dat geen enkele link actief was.

Ik heb de code in een nieuwe lijst geplakt, en hier werkte hij wederom enkele keren, totdat het zelfde probleem optrad.

Ik heb geen directe verandering kunnen waarnemen, niet in de code en ook niet in de links.

Enig idee mischien?

gr. Frans
 
Tussen 2 runs, delete je de kolom rechts?
Scherp!

frenske1964, Kan je inderdaad heel precies aangeven hoe je tests er uit zagen? Dus wat waren je stappen en met hoeveel regels of steeds dezelfde regels enz...
Ik zou zo namelijk geen verklaring kunnen geven waarom het zomaar mis gaat.

Groet, Leo
 
fout

Hoi Leo,

Bij het maken van een nieuw testbestand, werkt de macro een keer zoals hij hoort te werken, als het bestand word opgeslagen en dan opnieuw word uitgevoerd dan treed meestal de fout op. Ik heb diverse nieuwe bestanden gemaakt, maar ze reageren bijna allemaal verschillend, ik heb een bijlage toegevoegd die op de d schijf uitgepakt dient te worden als voorbeeld. Weet echt geen raad meer.

groetjes
 

Bijlagen

Frenske 1964, Ik heb je .rar uitgepakt en op D geplaatst. Daarna keer op keer de code laten lopen en alles bleef het keurig doen.

Ken je de optie F8 in de VB-editor? Hiermee kan je regel voor regel door je code lopen. Zo kan je zien waar het fout loopt bij je. Wat moet je doen... Open je testbestand en selecteer de cellen met de hyperlinks (ehhhh... ik ga er trouwens van uit dat je dat óók steeds netjes doet!) en open de VBE (Alt + F11). Kijk in welke module je code staat en zet de cursor ergens in die code. Als je dan op F8 drukt zie je de 1e regel geel worden. Door steeds op F8 te drukken stap je door de code totdat deze klaar is (óf een fout geeft natuurlijk).
Probeer bovenstaande ff uit en geef het resultaat daarvan door.

Bij de weg... Welke versie Excel gebruik je?

Groet, Leo
 
Hmmmm... Bij mij gaat het nu óók fout!:mad:
Goed, is het in iedergeval reproduceerbaar. Ik ga kijken of ik de oorzaak kan vinden.

Groet, Leo
 
Hoi Leo,

Pfew eigenlijk een opluchting, dacht al dat ik gek werd, want alles door jou beschreven had ik al gedaan.

Ook de hele f8 routine, het enigste wat me opviel was dat bij lFout = lFout + 1 hij netjes op fout=0 blijt staan totdat je op endif komt.

verder ook al vanalles geprobeerd maar niks raars gevonden.

:shocked: groetjes
 
...plak 'ns dit blokje in de module van je testsheet....
Code:
Sub AdresHyperlink()
Dim c As Range
    
    For Each c In Selection
        c.Hyperlinks(1).Address = c.Hyperlinks(1).TextToDisplay
    Next c

End Sub
...en laat die 'ns lopen. Het viel me op dat je naar een heel raar adres verwijst in je hyperlink. Blijft het daarna wel goed gaan?

Groet, Leo
 
Hoi Leo,

Met alleen die code loopt het goed, en word er ook niks veranderd aan de link.

En verwijs naar een raar adres? Het adres wat ik opgegeven had was gewoon het pad naar het bestand op de d schijf D:\prive\data\1.txt

We knutselen verder :)

groetjes
 
frenske1964, Wat dat laatste codeblokje doet, is het aanpassen van het echte (onzichtbare) hyperlinkadres die je wel ziet als je op zo'n hyperlinkcel op 'edit hyperlink' klikt (rechtermuis-menu). Je 'zichtbare tekst' zag er wel goed uit. Maar het hyperlinkadres was iets van 'prive/1.txt'. Alsof het een internetadres betrof.
Wil je 'ns voor me nakijken hoe dat zit met de adressen in je 'echte' bestand? (dus dat truukje met de rechtermuisknop)

Groet, Leo
 
Hoi Leo
De hyperlink is nu net het probleem zoals al eerder beschreven,
Op het moment dat je de eerste macro uitvoert, verandert die iets in de link.
Inderdaad van het gewone pad naar een internet adres, daarom functioneert de macro wel de eerste keer, maar na opslaan van het bestand niet meer, omdat het adres verandert is.

Nu met je 2e macro erbij functioneert het prima, :thumb:

Ik laat nu eerst Adreshyperlink lopen dan klopthyperlink en dan nog eens Adreshyperlink
zodat ik zeker weet dat het adres correct blijft.

Hartelijk bedankt voor het uitdokteren.
Ik zal hem morgen eens laten lopen op een copy van de orginele list.

groetjes :D
 
Frenske 1964
k laat nu eerst Adreshyperlink lopen dan klopthyperlink en dan nog eens Adreshyperlink
Dit gaat natuurlijk alléén op als je 'zichtbare adres' ook werkelijk een pad naar een bestand is. Als je dus bijvoorbeeld in je cel ziet 'Frenske 1964', maar het adres waar naar verwezen wordt is 'D:\data\LeukeDag.txt', dan gaat het volkomen fout en 'verrag' je al je hyperlinks!
Toch blijf ik 't vreemd vinden. De routine 'KloptHyperlink' doet namelijk helemaal niets met de hyperlink zelf. De waarde wordt opgevraagd en vervolgens werdt daarmee gecontroleerd of het bestand bestaat.
Wil je wel voor me kijken (voordat je morgen gaat testen) hoe die hyperlinks in het orginele bestand staan? Dus als een echt pad en niet als een soort van internetadres?

Groet, Leo
 
Hoi Leo,

Sorry voor de late reactie, maar ben een tijdje voor het werk in het buitenland geweest, het zichtbare adres is trouwens gelijk aan de link zelf.
Toch word op de een of andere manier de link zelf verandert, maar met je 2e oplossing funktioneert het trouwens prima.
Ik zet daarom de discussie op opgelost, mocht je desalniettemin nog een suggestie hebben houd ik me aanbevolen.

gr. Frans
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan