Динамические гиперссылки Excel на данные назначения - PullRequest
0 голосов
/ 07 мая 2019

Я создал документ Excel, который импортирует файл CSV с данными из AD, который в основном создает телефонную книгу, после чего он экспортируется в PDF. Тем не менее, меня просят создать способ легко переходить к фамилиям на основе букв.

Я пытаюсь создать гиперссылки в Excel, которые выдержат преобразование PDF. Они должны быть динамичными, так как местоположение фамилии будет меняться ежедневно. Таким образом, гиперссылка должна искать в листе «Фонелист» первую ячейку в столбце A с первой буквой A-Z, а затем гиперссылку на эту ячейку. Я застрял и едва знаю, с чего начать.

Преобразование PDF осуществляется с помощью Powershell, а импорт данных - через связанный CSV-файл, который обновляет данные каждый раз при открытии. То, что я теоретически мог бы сделать, это попытаться создать новый лист для каждой буквы алфавита, но я бы предпочел этого избегать, поскольку данные были бы более сегментированными, чем мы хотели бы.

Сохранить как PDF

$workbook.ExportAsFixedFormat($xlFixedFormat::xlTypePDF, 'C:\users\aricci\Phonebook\Telephonebook.pdf')

Вот моя рабочая ссылка прямо сейчас. 2 проблемы, во-первых, мне нужно, чтобы диапазон начинался с ячейки A2, а не с A1, который является заголовком. Во-вторых, он не выдерживает преобразования PDF.

=HYPERLINK("#" & CELL("address",INDEX(Phonelist!A:A,MATCH("A*",Phonelist!A:A,0))),"A")

Я бы предположил, что VBA будет похож на это, но я не уверен, как отредактировать его для того, что мне нужно.

Sub CreateHyperlinks()
Dim cl As Range

For Each cl In Range("B1:B100").Cells '## Modify as needed
    cl.Hyperlinks.Add cl, cl.Value, , , cl.Offset(0,-1).Value
Next

End Sub

1 Ответ

0 голосов
/ 07 мая 2019

Хорошо, так что я понял это ... это не красиво, я повторяю это для каждой из 26 ячеек, но это работает.Теперь мне нужно выяснить, как запустить Acrobat с помощью скрипта, но это выходит за рамки этого вопроса.

For Each cl In Range("A8").Cells '## Modify as needed
cl.Hyperlinks.Add cl.Offset(-1, 0), cl.Value, , , cl.Offset(-1, 0).Value
On Error Resume Next
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...