17. oktober 2006 - 11:58Der er
9 kommentarer og 1 løsning
Automatisk gernereing af hyperlink via VBA
Jeg har en projektmappe med cirka 50 ark, hvor jeg gerne automatisk vil have indsat et hyperlink på alle ark bortset fra det første ark startende i "Ark1" - B2. Koden skal automatisk slette de forrige hyperlinks, da der kommer flere og flere ark til og arkene kan ændre sig.
Range("A1:i1").Select With Selection .HorizontalAlignment = xlCenter End With Selection.Merge With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = 3 End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = 3 End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = 3 End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = 3 End With End If Range("a2:i31").Select ' sletter alle data i området til hyperlink Selection.ClearContents ' der kan jo være fjernet sider ??? Range("a2").Select '-----------------------------------------Der laves hyperlink til alle ark ------------- For Each ws In Worksheets Worksheets("Menu").Range("a2:a260").Cells(W, K).Select ' reseverer et område til at skrive hyperlink i
If ws.Name = "Menu" Then GoTo Næste ' Hopper over hovedarket "Menu"
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & ws.Name & "'" & "!A1" ActiveCell.FormulaR1C1 = ws.Name ' skriver hyperlink på alle sider inden for området W = W + 1 Næste: Next ws '------------------------------Soterer kollonne A ---------------------------- Range("A2").Select Range(Selection, Selection.End(xlDown)).Select Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal
'--------------- Flytter data over i kolonner ------------------------ R = 2 For I = 31 To 252 Step 28 Range("A" & I & ":A" & I + 28).Cut Cells(2, R).Select ActiveSheet.Paste R = R + 1 Next Columns("A:I").Select Selection.EntireColumn.AutoFit Range("A1").Select
Det er meget tæt på. Jeg har bare lidt problemer, når jeg siger "Nej" til at indsætte et ark, der hedder "Menu". Jeg har et ark, der hedder "Info", hvor de informationer, du hjalp med mig i går (alle arknavnene) står. Jeg ville egentlig gerne kombinere dem ved at have dem i kolonne A og så de tilhørende hyperlinks i kolonne B. Jeg smider gerne 30 points ekstra i, hvis man kan gøre det, da det jo nu udvikler sig :o). Er det muligt?
Public Sub Arknavne() Rw = 2 For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Ark1" Then Cells(Rw, 1) = ws.Name Cells(Rw, 2).Select ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ ws.Name & "!A1" Cells(Rw, 2).FormulaR1C1 = ws.Name Rw = Rw + 1 End If Next End Sub
Jeg har lige prøvet at kopiere koden over i mit "rigtige" dokument. Koden virker perfekt i min test, men i det "rigtige" dokumnent skrives der "Referencen er ugyldig". Jeg kan se, at der bliver sat 3 skråstreger før filnavnet file:///\\filnavn.xls. Har du prøvet det?
prøv denne, det kan være du har arknavne med mellemrum, eller du har ikke koden i den Workbook den skal virke i.
denne linie For Each ws In ThisWorkbook.Worksheets siger "for hver side, i den Workbook som koden er i"
hvis den skal virke fra en anden Workbook, skal linien se sådan ud For Each ws In ActiveWorkbook.Worksheets
Public Sub Arknavne() Rw = 2 For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Ark1" Then Cells(Rw, 1) = ws.Name Cells(Rw, 2).Select ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ "'" & ws.Name & "'!A1" Cells(Rw, 2).FormulaR1C1 = ws.Name Rw = Rw + 1 End If Next End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.