Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Создание гиперссылок на файлы по неполному названию (поиск) - Страница 2 - Мир MS Excel

  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_, DrMini  
Создание гиперссылок на файлы по неполному названию (поиск)
Литр Дата: Четверг, 30.04.2026, 11:18 | Сообщение № 21
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 0 ±
Замечаний: 0% ±

2013
Доброго всем.

Вручную меняю этот код перед назначением гиперссылок. В данном виде он работает на 10 ячеек первого столбца вверх от занятой ячейки.
Как скорректировать макрос, что бы после выделения последней строки, поиск неприсвоенных гиперссылок производился от последней нижней гиперссылки в том же первом столбце.
Например предположим: сейчас последняя гиперссылка в А123, а последняя строка в таблице 148, значит он должен присвоить ссылки ячейкам в диапазоне А124:А148

[vba]
Код
Public Sub ssilkee()
LastRow = Cells(Rows.Count, 2).End(xlUp).Row       'Захват последнего использованного номера строки
    Cells(LastRow, 2).Offset(1, 0).Select           'Выбираем следующую строку вниз
Dim rng1 As Range, unoCell As Range
Dim rowLast As Long
Dim TheFolder, TheFiles, AFile, FSO
Dim FolderName As String
With ActiveSheet
rowLast = .Cells(Rows.Count, 1).End(xlUp).Row
FolderName = "L:\**********\*****************"
Set rng1 = .Range(.Cells(Selection(1).Row - 10, 1), .Cells(Selection(1).Row, 1))
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TheFolder = FSO.GetFolder(FolderName)
Set TheFiles = TheFolder.Files
For Each unoCell In rng1
For Each AFile In TheFiles
If (AFile.Name Like "*" & unoCell.Value & "*.*") And (unoCell.Value <> "") Then
.Hyperlinks.Add Anchor:=unoCell.Offset(0, 0), _
Address:=TheFolder.Path & "\" & AFile.Name ', TextToDisplay:=TheFolder.Path & "\" & AFile.Name
End If
Next AFile
Next unoCell
End With

End Sub
[/vba]
 
Ответить
СообщениеДоброго всем.

Вручную меняю этот код перед назначением гиперссылок. В данном виде он работает на 10 ячеек первого столбца вверх от занятой ячейки.
Как скорректировать макрос, что бы после выделения последней строки, поиск неприсвоенных гиперссылок производился от последней нижней гиперссылки в том же первом столбце.
Например предположим: сейчас последняя гиперссылка в А123, а последняя строка в таблице 148, значит он должен присвоить ссылки ячейкам в диапазоне А124:А148

[vba]
Код
Public Sub ssilkee()
LastRow = Cells(Rows.Count, 2).End(xlUp).Row       'Захват последнего использованного номера строки
    Cells(LastRow, 2).Offset(1, 0).Select           'Выбираем следующую строку вниз
Dim rng1 As Range, unoCell As Range
Dim rowLast As Long
Dim TheFolder, TheFiles, AFile, FSO
Dim FolderName As String
With ActiveSheet
rowLast = .Cells(Rows.Count, 1).End(xlUp).Row
FolderName = "L:\**********\*****************"
Set rng1 = .Range(.Cells(Selection(1).Row - 10, 1), .Cells(Selection(1).Row, 1))
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TheFolder = FSO.GetFolder(FolderName)
Set TheFiles = TheFolder.Files
For Each unoCell In rng1
For Each AFile In TheFiles
If (AFile.Name Like "*" & unoCell.Value & "*.*") And (unoCell.Value <> "") Then
.Hyperlinks.Add Anchor:=unoCell.Offset(0, 0), _
Address:=TheFolder.Path & "\" & AFile.Name ', TextToDisplay:=TheFolder.Path & "\" & AFile.Name
End If
Next AFile
Next unoCell
End With

End Sub
[/vba]

Автор - Литр
Дата добавления - 30.04.2026 в 11:18
MikeVol Дата: Пятница, 01.05.2026, 09:40 | Сообщение № 22
Группа: Проверенные
Ранг: Обитатель
Сообщений: 479
Репутация: 116 ±
Замечаний: 0% ±

MSO LTSC 2021 EN
Литр, Пробуйте следуйщий код без выделения ячеек: [vba]
Код
Option Explicit

Public Sub litr_exWorld()
    Dim i As Long, lastLinkRow As Long
    Dim c           As Range
    Dim f           As Object

    Dim ws          As Worksheet
    Set ws = ActiveSheet

    ' Последняя строка
    Dim rowLast     As Long
    rowLast = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' Быстрый поиск последней гиперссылки (снизу вверх)
    For i = rowLast To 1 Step -1

        If ws.Cells(i, 1).Hyperlinks.Count > 0 Then
            lastLinkRow = i
            Exit For
        End If

    Next i

    If lastLinkRow = 0 Then lastLinkRow = 1
    If lastLinkRow >= rowLast Then Exit Sub

    Dim rng         As Range
    Set rng = ws.Range(ws.Cells(lastLinkRow + 1, 1), ws.Cells(rowLast, 1))

    ' Папка, Замените на свой путь к папке
    Dim FolderName  As String
    FolderName = ThisWorkbook.Path    ' "L:\**********\*****************"

    Dim FSO         As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")

    ' Массив файлов
    Dim filesArr()  As String
    ReDim filesArr(1 To FSO.GetFolder(FolderName).Files.Count)

    i = 1

    For Each f In FSO.GetFolder(FolderName).Files
        filesArr(i) = f.Name
        i = i + 1
    Next f

    For Each c In rng

        If Len(c.Value) > 0 Then

            For i = 1 To UBound(filesArr)

                If filesArr(i) Like "*" & c.Value & "*" Then
                    ws.Hyperlinks.Add c, FolderName & "\" & filesArr(i)
                    Exit For
                End If

            Next i

        End If

    Next c

End Sub
[/vba]Читайте комментарий в коде. Удачи.


Ученик.
Одесса - Украина
 
Ответить
СообщениеЛитр, Пробуйте следуйщий код без выделения ячеек: [vba]
Код
Option Explicit

Public Sub litr_exWorld()
    Dim i As Long, lastLinkRow As Long
    Dim c           As Range
    Dim f           As Object

    Dim ws          As Worksheet
    Set ws = ActiveSheet

    ' Последняя строка
    Dim rowLast     As Long
    rowLast = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' Быстрый поиск последней гиперссылки (снизу вверх)
    For i = rowLast To 1 Step -1

        If ws.Cells(i, 1).Hyperlinks.Count > 0 Then
            lastLinkRow = i
            Exit For
        End If

    Next i

    If lastLinkRow = 0 Then lastLinkRow = 1
    If lastLinkRow >= rowLast Then Exit Sub

    Dim rng         As Range
    Set rng = ws.Range(ws.Cells(lastLinkRow + 1, 1), ws.Cells(rowLast, 1))

    ' Папка, Замените на свой путь к папке
    Dim FolderName  As String
    FolderName = ThisWorkbook.Path    ' "L:\**********\*****************"

    Dim FSO         As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")

    ' Массив файлов
    Dim filesArr()  As String
    ReDim filesArr(1 To FSO.GetFolder(FolderName).Files.Count)

    i = 1

    For Each f In FSO.GetFolder(FolderName).Files
        filesArr(i) = f.Name
        i = i + 1
    Next f

    For Each c In rng

        If Len(c.Value) > 0 Then

            For i = 1 To UBound(filesArr)

                If filesArr(i) Like "*" & c.Value & "*" Then
                    ws.Hyperlinks.Add c, FolderName & "\" & filesArr(i)
                    Exit For
                End If

            Next i

        End If

    Next c

End Sub
[/vba]Читайте комментарий в коде. Удачи.

Автор - MikeVol
Дата добавления - 01.05.2026 в 09:40
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!