VBA Excel - hypertextový odkaz

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

VBA Excel - hypertextový odkaz

Příspěvekod Branscombe » 03 lis 2010 07:43

Ahoj, potřeboval bych makro které by mi při změně dané buňky ve sloupci "A" vložilo do této buňky hypertextový odkaz ve formátu "C:\Program Files\"hodnota z buňky"" a dané umístění by i vytvořilo.

Takže by to mělo fungovat tak že zapíšu do buňky A6 hodnotu "Branscombe" a automaticky se vloží do buňky A6 hypertextový odkaz (C:\Program Files\Branscombe), zobrazená bude v buňce hodnota "Branscombe" a vytvoří se složka "Branscombe" ve složce "C:\Program Files\"

šlo by to ??

Reklama
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBA Excel - hypertextový odkaz

Příspěvekod navstevnik » 03 lis 2010 08:44

Zakladni programova konstrukce je (v editoru VBA voz do modulu tridy prislusneho listu, uprav si dle potreby disk a slozku pro vytvoreni podslozky):

Kód: Vybrat vše

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Response As Byte
  If Target.Column = 1 Then
    If Target.Cells.Count = 1 Then
      If Target.Value <> vbNullString Then
        Response = MsgBox("Jiste vytvorit slozku: " & Target.Value & "?", vbQuestion + vbYesNo + vbDefaultButton2)
        If Response = 6 Then
          Dim fso
          Set fso = CreateObject("Scripting.FileSystemObject")
          fso.CreateFolder ("E:\Excel\" & Target.Value)
          Set fso = Nothing
          Application.EnableEvents = False
          Target.Formula = "=HYPERLINK(""" & "E:\Excel\" & Target.Value & """,""" & Target.Value & """)"
          Application.EnableEvents = True
        End If
      End If
    End If
  End If
End Sub

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: VBA Excel - hypertextový odkaz

Příspěvekod Branscombe » 03 lis 2010 10:45

Ahoj, díky za pomoc, ale nefunguje mi to a nemohu to ani odkrokovat abych se pokusil najít chybu ... :-/

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBA Excel - hypertextový odkaz

Příspěvekod navstevnik » 03 lis 2010 12:10

Udalostni procedury nelze spusti primo v editoru VBA klavesou F5.
Do procedury musis vlozit BreakPoint, a na prislusnem listu vlozit ve sloupci retezec a pak muzes krokovat.
Procedura funguje, problem bude nejspis mezi zidli a klavesnici.
Prikladam upravenou udalostni proceduru, kde diskova jednotka a cesta je zadana v konstante:

Kód: Vybrat vše

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Response As Byte
  Const DiskPath As String = "E:\Excel\"
  If Target.Column = 1 Then
    If Target.Cells.Count = 1 Then
      If Target.Value <> vbNullString Then
        Response = MsgBox("Jiste vytvorit slozku: " & Target.Value & "?", vbQuestion + vbYesNo + vbDefaultButton2)
        If Response = 6 Then
          Dim fso
          Set fso = CreateObject("Scripting.FileSystemObject")
          fso.CreateFolder (DiskPath & Target.Value)
          Set fso = Nothing
          Application.EnableEvents = False
          Target.Formula = "=HYPERLINK(""" & DiskPath & Target.Value & """,""" & Target.Value & """)"
          Application.EnableEvents = True
        End If
      End If
    End If
  End If
End Sub

A pokud mas problemy, tak neni k nicemu napsat, ze mi to nefunguje, je potreba uvest pripadna chybova hlaseni a jine priznaky nefunkcnosti.

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: VBA Excel - hypertextový odkaz

Příspěvekod Branscombe » 03 lis 2010 12:53

No teď už je to OK, ale před tím to nedělalo absolutně nic ... Prostě jsem zapisoval a ani ťuk ...

Díky

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: VBA Excel - hypertextový odkaz

Příspěvekod Branscombe » 03 lis 2010 13:13

Chtěl jsem tam vložit ještě přidat podmínku

Kód: Vybrat vše

If Dir("E:\Excel\Target.Value") <> "" Then
Exit Sub
Else
...
...


tak aby mi to nevyhazovalo s chybou když již složka existuje, ale nějak mi to nejde :-/

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBA Excel - hypertextový odkaz

Příspěvekod navstevnik » 03 lis 2010 15:10

Toto je upravena procedura:

Kód: Vybrat vše

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Response As Byte, OK As Boolean
  Const DiskPath As String = "E:\Excel\"
  If Target.Column = 1 Then
    If Target.Cells.Count = 1 Then
      If Target.Value <> vbNullString Then
        Response = MsgBox("Jiste vytvorit slozku: " & Target.Value & "?", vbQuestion + vbYesNo + vbDefaultButton2)
        If Response = 6 Then
          Dim fso
          OK = True
          Set fso = CreateObject("Scripting.FileSystemObject")
          If Not fso.FolderExists(DiskPath & Target.Value) Then
            fso.CreateFolder (DiskPath & Target.Value)
          Else
            OK = False
          End If
          Set fso = Nothing
          If Not OK Then
            MsgBox "Slozka '" & DiskPath & Target.Value & "' jiz existuje"
            Exit Sub
          End If
          Application.EnableEvents = False
          Target.Formula = "=HYPERLINK(""" & DiskPath & Target.Value & """,""" & Target.Value & """)"
          Application.EnableEvents = True
        End If
      End If
    End If
  End If
End Sub

Kdyz uz byl pro vytvoreni slozky pouzit FileSystemObject (FSO), tak je vhodne pouzit i pro zjisteni, zda existuje.
Zaklad k pouziti je zde http://msdn.microsoft.com/en-us/library ... 85%29.aspx a nespocet dalsich odkazu (Google) vcetne v cestine

Doplneno - nize je pouzit alternativne pro osetreni chyby prikaz GoTo Error :

Kód: Vybrat vše

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Response As Byte
  Const DiskPath As String = "E:\Excel\"
  If Target.Column = 1 Then
    If Target.Cells.Count = 1 Then
      If Target.Value <> vbNullString Then
        Response = MsgBox("Jiste vytvorit slozku: " & Target.Value & "?", vbQuestion + vbYesNo + vbDefaultButton2)
        If Response = 6 Then
          Dim fso
          Set fso = CreateObject("Scripting.FileSystemObject")
          On Error Resume Next
          fso.CreateFolder (DiskPath & Target.Value)
          Set fso = Nothing
          If Err.Number <> 0 Then
            MsgBox "Slozka '" & DiskPath & Target.Value & "' jiz existuje"
            Exit Sub
          End If
          On Error GoTo 0
          Application.EnableEvents = False
          Target.Formula = "=HYPERLINK(""" & DiskPath & Target.Value & """,""" & Target.Value & """)"
          Application.EnableEvents = True
        End If
      End If
    End If
  End If
End Sub


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • EXCEL -jak otevřít 2 excel sobory abych je viděla současne a samostatně
    od Ketty02 » 30 srp 2024 21:19 » v Vše ostatní (sw)
    2
    4772
    od Riviera kid Zobrazit poslední příspěvek
    02 zář 2024 16:21
  • Windows 10 IoT Enterprise LTSC 2021 (podpora 2031) - v Českém jazyce? CZ lokace? Kde levně koupit licenci - link? Odkaz?
    od IMB » 30 črc 2024 13:14 » v Windows 11, 10, 8...
    3
    3872
    od petr22 Zobrazit poslední příspěvek
    30 črc 2024 21:38
  • Přechod z Excel 21 na Excel 24
    od Snekment » 29 led 2025 13:46 » v Kancelářské balíky
    2
    12188
    od Snekment Zobrazit poslední příspěvek
    29 led 2025 15:05
  • Pohoda a excel Příloha(y)
    od brownwld » 06 kvě 2025 17:28 » v Kancelářské balíky
    1
    4604
    od atari Zobrazit poslední příspěvek
    07 kvě 2025 09:41
  • Excel - výpočet nočních hodin Příloha(y)
    od Uziv00 » 17 říj 2024 11:22 » v Kancelářské balíky
    3
    3316
    od lubo. Zobrazit poslední příspěvek
    24 říj 2024 00:00

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů