Excel VBA automatický Hyperlink

Programy pro práci s textem, tabulkami, prezentacemi

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod ferar360 19. 8. 2017 15:32

Dobrý deň,

potreboval by som poradiť ohľadom vytvorenia VBA kódu na automatizované vytváranie hypertextového prepojenia.

Som VBA som nerobil, tak netuším ako na to. Mojou predstavou je vytvorenie kódu, ktorý umožní po vpísaní do bunky napríkl.: meno a priezvisko aby otvoril rovnako nazvanú excel tabuľku.

vytvorím si zošit s názvom Jožko Púčik
mám 2. zošit s názvom mená, kde do bunky A2 vpíšem Jožko Púčik
chcem, aby sa bez potreby vytvorenia hypertextového prepojenia, otvárali zošity po kliknutí

A ešte pokiaľ by to bolo možné, aby kopiroval zošit s názvom predloha a premenoval podľa stĺpca A, kde by boli mená.

Pridávam odkaz na súbory.
Kód: Vybrat vše
http://leteckaposta.cz/449445044

Našiel som kód, ktorý mi vyhovuje ale neviem ho upraviť ako potrebujem.

Module1
Kód: Vybrat vše
Sub ActivateWorkbook(ByVal sWbName As String)

On Error GoTo ErrorHandle

'The function BookIsOpen checks if
'the workbook is open.
If BookIsOpen(sWbName) Then
   'Activate if open
   Workbooks(sWbName).Activate
Else
   'If it is not open, we check if it exists in the
   'same folder as this workbook. If it does, we open it.
   If Len(Dir(ThisWorkbook.Path & "\" & sWbName & "*")) > 0 Then
      ChDir (ThisWorkbook.Path)
      Workbooks.Open (sWbName)
   Else
      MsgBox "Workbook " & sWbName & " doesn't exist in " & ThisWorkbook.Path
   End If
End If

Exit Sub
ErrorHandle:
MsgBox Err.Description & " Procedure ActivateWorkbook, Module1"
End Sub
Function BookIsOpen(sWbName As String) As Boolean
'If the workbook isn't open the following
'triggers an error, so we use On Error Resume Next
On Error Resume Next
BookIsOpen = Len(Workbooks(sWbName).Name)
End Function

Sub FindName(ByVal sName As String)
'Finds and activates the cell with
'the same value as the cell in
'column E in the Index sheet.
Dim rColumn As Range
Dim rFind As Range

Worksheets("Contact Data").Activate

'The range rColumns is set to column A
Set rColumn = Columns("A:A")

'Search column A
Set rFind = rColumn.Find(sName)

'If found activate cell
If Not rFind Is Nothing Then
   rFind.Activate
Else
   'Else activate cell A1
   Range("A1").Activate
End If

Set rColumn = Nothing
Set rFind = Nothing
End Sub


SheetBeforeDoubleClick
Kód: Vybrat vše
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

If Len(Target.Value) = 0 Then Exit Sub
If ActiveSheet.Name = "Contact Data" Then Exit Sub

With Target
   Select Case .Column
      Case 1
         Module1.ActivateWorkbook .Value
      Case 3
         On Error Resume Next
         Worksheets(Target.Value).Activate
      Case 5
         Module1.FindName .Value
   End Select
End With

End Sub


Ďakujem za radu a poprosím pomaly na mňa.
ferar360
Junior

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků