hyperlink wijzigen met vba

Status
Niet open voor verdere reacties.

Doohan

Gebruiker
Lid geworden
20 mrt 2012
Berichten
377
Goedemorgen heren,

Klein vraagje ik heb een werkblad met in kolom A allemaal hyperlinks (niet alle cellen zijn voorzien in kolom A hiervan) nu heb ik een macro om in 1 keer alle verwijzingen te veranderen. Dit is nodig omdat onze server een nieuwe naam heeft gekregen.
De bijgeplaatste code werkt perfect maar hij heeft niet alle hyperlinks gewijzigd. Op een of andere reden blijft vanaf regel 2934 alles ongewijzigd. wie kan mij op het juiste pad zetten.
Code:
Sub ReplaceHyperlinks()

'vervangt exacte string in hyperlink

Dim Ws As Worksheet
Dim xHyperlink As Hyperlink
Dim xOld As String, xNew As String
Set Ws = Application.ActiveSheet
xOld = Application.InputBox("Old text:", "", Type:=2)
xNew = Application.InputBox("New text:", "", Type:=2)
Application.ScreenUpdating = False
For Each xHyperlink In Ws.Hyperlinks
xHyperlink.Address = Replace(xHyperlink.Address, xOld, xNew)
Next
Application.ScreenUpdating = True
End Sub

Alvast vriendelijk dank,

groet Martin
 
foutje

Sorry voor degene die voor mij aan het kijken is.
Ik heb een foutje ontdekt in de hyperlinks. Dus de macro werkt perfect.

Ik ga snel het lijntje sluiten
 
het kan ook met:

Code:
Sub M_snb()
   sn = Array(InputBox("Oude server"), InputBox("Nieuwe server"))
 
  For Each hp In ActiveSheet.Hyperlinks
        hp.Address = Replace(hp.Address, sn(0), sn(1))
   Next
End Sub
 
werkt inderdaad ook

Bedankt snb,

maar je bedoelt waarschijnlijk
Code:
Sub M_snb()
   sn = Array(InputBox("Oude server"), InputBox("Nieuwe server"))
 
  For Each sn In ActiveSheet.Hyperlinks
        hp.Address = Replace(hp.Address, sn(0), sn(1))
   Next
End Sub
 
Dat zeker niet; hp is een hyperlink
 
Laatst bewerkt:
ik dacht het

Degene die jij stuurde werkte niet, bij mij tenminste. Dacht ik een keer slim te zijn.haha Ik had de mijne niet kunnen kunnen testen. Ik ga dit morgen nog eens bekijken. Ik kon me ook niet voorstellen dat jij een foutje maakte.

groetjes Martin
 
@snb declareerd nimmer.

Verwijder "Option explicit" bovenaan de module, of declareer "sn" en "hp" als volgt:
Code:
dim sn, hp as hyperlink
 
hyperlink wijzigt voor een deel

Bekijk bijlage Map1.xlsm. In de bijgestopte bijlage heb ik de code van snb in een module gezet deze zou net als mijn code bovenaan de hyperlinks moeten wijzigen in kolom A maar op een of andere manier gaat het vanaf regel 341 (105942 zie bestand) niet meer verder. Ik zie alleen niet wat hier mis mee is.

Alvast vriendelijk dank
 
Bij mij loopt-ie prima door. Dus aan de code ligt het niet. Wellicht aan de schrijfwijze van je ingegeven testwaarde?
 
heb je goed gekeken vanaf regel 341? thuis doet hij het nl niet excel 2010 op het werk excel 2013 loopt hij ook niet door. het zijn gewone hyperlinks helaas doe ik dit voor een collega . Dus de manier van hoe zij de hyperlinks heeft gemaakt weer ik niet.
 
Laatst bewerkt:
Het is niet duidelijk uit je bijlage wat waarin veranderd moet worden.

Als consistentie in de referenties van de hyperlinks ontbreekt, kan een routine die vanuit een consistentie-assumptie is gemaakt daaraan niets 'verbeteren'.
 
in het bestand in de bijlage is de macro al uitgevoerd. Voor de uitvoering wezen alle hyperlinks naar server01 dat moest verandert worden in sv-zwart-01 vanaf regel 341 blijft het helaas server01. Ik heb de hyperlink eigenschappen vergeleken met degene die wel gewijzigd zijn(dus boven regel 341), ik zie daar geen verschil in eigenschappen. En toch verandert vanaf regel 341 de hyperlink niet. Ik heb mijn collega maar alvast vertelt dat ze de rest handmatig opnieuw moet doen. Als haar ogen bliksemschichten kon schieten, dan had ik deze vraag niet meer kunnen stellen.:shocked:
 
T'is wat, met die collega's....

Code:
Sub M_snb()
   sn = Array(InputBox("Oude server"), InputBox("Nieuwe server"))
 
   For Each hp In ActiveSheet.Hyperlinks
        hp.Address = Replace(lcase(hp.Address), lcase(sn(0)), lcase(sn(1)))
   Next
End Sub

of

Code:
Sub M_snb()
   sn = Array(InputBox("Oude server"), InputBox("Nieuwe server"))
 
   For Each hp In ActiveSheet.Hyperlinks
        hp.Address = Replace(hp.Address, sn(0), sn(1), , , 1)
   Next
End Sub
 
Laatst bewerkt:
Bedankt allen voor de inzet. de code werkt SNB. ik ga mensen blij maken
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan