Страницы: 1
RSS
Запись гиперссылки на лист Excel в ячейку
 
Есть макрос, пробегающий по все вкладкам файла и записывающий в контрольную ячейку (87,500)  название листа и заданный ColorIndex.
Код
For Each wsSh In ThisWorkbook.Worksheets  'пробегаемся по вкладкам
    With wsSh
        .Tab.ColorIndex = 4 ' красим ярлыки листов в зеленый
        With .Range("CI500")
            .Interior.ColorIndex = 4 ' красим зеленкой ячейку CI500
            .Value = wsSh.Name
        End With
     End With
Next

Как сделать, чтобы в .Value записывалась еще и гиперссылка на ячейку A1 этого же пробегаемого листа?
Спасибо
 
гиперссылка не записывается в .value диапазона ячеек
гиперссылка назначается командой .hyperlinks.add (отдельной строкой кода) одной или нескольким ячейкам
 
ze_storm,
Код
Sub bb()
Dim wsSh As Worksheet
  For Each wsSh In ThisWorkbook.Worksheets            'пробегаемся по вкладкам
    With wsSh
      .Tab.ColorIndex = 4                             ' красим ярлыки листов в зеленый
      .Hyperlinks.Add .Range("CI500"), "", "'" & .Name & "'!A1", "screentip", .Name
      .Range("CI500").Interior.ColorIndex = 4         ' красим зеленкой ячейку CI500
    End With
  Next
End Sub
Вместо "screentip" напишите то, что должно отображаться во всплывающей подсказке. Или опустите этот параметр.
 
Казанский, ура, работает! А можно ли в этом же макросе путь к файлу прописать, чтобы он открывался извне, но тоже сразу на нужном листе и ячейке A1? Ну например из "C:\Users\file.xls"  
Хочу из кучи однотипных файлов копировать эти контрольные ячейки и вставлять в сводную таблицу (макрос уже написал), чтобы при клике на ссылку в этой сводной таблице открывался мой файл1 на листе, откуда скопирована эта контрольная ячейка.

Спасибо!
 
Цитата
ze_storm написал:
можно ли в этом же макросе путь к файлу прописать
6-я строка
Код
      .Hyperlinks.Add .Range("CI500"), ThisWorkbook.FullName, "'" & .Name & "'!A1", "screentip", .Name

Цитата
ze_storm написал:
Хочу из кучи однотипных файлов копировать эти контрольные ячейки и вставлять в сводную таблицу
Вам придется из каждого листа копировать по одной ячейке. Может лучше макросом создать новый лист, в первом столбце которого создать такие гиперссылки на каждый лист? Скопировать все гиперссылки за один раз, потом лист удалить.
 
Цитата
Казанский написал:
     .Hyperlinks.Add .Range("CI500"), ThisWorkbook.FullName, "'" & .Name & "'!A1", "screentip", .Name
Уже намного лучше! Правда теперь еще одна проблема всплыла, при копировании этой ячейки и вставке методом xlPasteAll ссылка вставляется неправильно, указывая путь к нужному файлу в ту папку, откуда я запускаю сводный файл. Хотя внутри файла с контрольной ячейкой адрес гиперссылки прописан верно.
Получается, что ссылка работает только в случае если оба файла находятся в одной папке. Скрипт, которым я копирую контрольную ячейку, ниже. Может получится каким-то образом разобраться...
Код
Sub проверка_возврата()
Application.ScreenUpdating = False
Dim WB1 As Workbook, Wb2 As Workbook
Dim x As Integer
Dim wk16 As Worksheet
On Error Resume Next
Set Wb2 = Workbooks("\\Srv-f01\svodnyi.xlsm") ' таблица, в которую копируются контрольные ячейки
Set WB1 = Application.Workbooks.Open("\\Srv-f01\Public\file1.xlsm") ' файл с контрольной ячейкой
x = 2
For Each wk16 In WB1.Worksheets
    wk16.Cells(500, 87).Copy
    With Wb2.Sheets(1).Cells(9, x)
        .PasteSpecial Paste:=xlPasteAll

    End With
    x = x + 1
Next wk16
WB1.Close (False)
Application.ScreenUpdating = True
End Sub

Цитата
Казанский написал: Вам придется из каждого листа копировать по одной ячейке. Может лучше макросом создать новый лист, в первом столбце которого создать такие гиперссылки на каждый лист? Скопировать все гиперссылки за один раз, потом лист удалить.
Хорошая идея, спасибо. Наверное так и сделаю, если получится что-то сделать с гиперссылками.
Изменено: ze_storm - 19.12.2016 16:16:27
 
Казанский, еще раз спасибо за помощь!
 
Вопрос закрыт. Ошибка при копировании решается подстановкой этой же строчки  в макрос файла, В КОТОРЫЙ копируется ячейка. А не файла, из которого она копируется
Страницы: 1
Наверх