Добавить гиперссылки на этот VBA

#excel #vba #hyperlink #directory

#excel #vba #гиперссылка #каталог

Вопрос:

Приведенный ниже VBA позволяет пользователю выбрать папку, после чего полные пути отображаются в столбце 1 активного листа.

Как бы мне изменить это, чтобы эти пути работали как гиперссылки?

 Option Explicit
Sub cmdList()
    Dim sPath   As String
    Dim fOut    As Variant
    Dim r       As Integer
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Select directory"
        .InitialFileName = ThisWorkbook.Path amp; ""
        .AllowMultiSelect = False
        If .Show = 0 Then Exit Sub
        sPath = .SelectedItems(1)
    End With
    fOut = Split(CreateObject("WScript.Shell").exec("cmd /c dir """ amp; sPath amp; """ /a:-h-s /b /s").StdOut.ReadAll, vbNewLine)
    r = 5
    Range(r amp; ":" amp; Rows.Count).Delete
   Cells(r, 1).Resize(UBound(fOut)   1, 1).Value = WorksheetFunction.Transpose(fOut)
End Sub
  

Спасибо!

Ответ №1:

Поскольку ваш код уже получает полную спецификацию файла, мы можем использовать данные для завершения =HYPERLINK() формул:

 Sub cmdList()
    Dim sPath   As String
    Dim fOut    As Variant
    Dim r       As Integer

    Dim Cell As Range

    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Select directory"
        .InitialFileName = ThisWorkbook.Path amp; ""
        .AllowMultiSelect = False
        If .Show = 0 Then Exit Sub
        sPath = .SelectedItems(1)
    End With
    fOut = Split(CreateObject("WScript.Shell").exec("cmd /c dir """ amp; sPath amp; """ /a:-h-s /b /s").StdOut.ReadAll, vbNewLine)
    r = 5
    Range(r amp; ":" amp; Rows.Count).Delete
   Cells(r, 1).Resize(UBound(fOut)   1, 1).Value = WorksheetFunction.Transpose(fOut)

   '*************************************************************

   Dim dq As String,  rng As Range
   dq = Chr(34)

   Set Rng = Cells(r, 1).Resize(UBound(fOut)   1, 1)
   For Each Cell In Rng
        Cell.Formula = "=HYPERLINK(" amp; dq amp; Cell.Value amp; dq amp; "," amp; dq amp; Cell.Value amp; dq amp; ")"
   Next Cell

End Sub
  

Комментарии:

1. Ты прекрасный падаван, ученик Гэри! Большое спасибо.

Ответ №2:

добавьте код над синтаксисом «End sub». Следующий код изменит значение Activecell на hyperlink

Активная таблица.Гиперссылки.Добавьте Activecell, Activecell.Значение

Я надеюсь, что это полезно для вас.