#arrays #excel #vba #hyperlink
#массивы #excel #vba #гиперссылка
Вопрос:
У меня есть макрос Excel, который использует DIR в lopp для извлечения всех файлов из всех папок и отображения их на листе. Бит кода, который выводится на лист на каждой итерации, является:
rOut.Range("A1:B1").Offset(iFile).Value = Array(sName, sFile)
Я хотел бы вывести первую ячейку в виде гиперссылки на папку, в которой находится файл (хранится в переменной sPath), а во второй ячейке я хотел бы вывести имя файла, которое также является гиперссылкой для открытия файла.
Я придумал этот фрагмент кода:
With rOut
With .Cells(1, 1)
.Offset(iFile).Hyperlinks.Add Anchor:=.Offset(iFile), Address:=sPath, TextToDisplay:=sName
End With
With .Cells(1, 2)
.Offset(iFile).Hyperlinks.Add Anchor:=.Offset(iFile), Address:=sName, TextToDisplay:=sFile
End With
End With
Я знаю, что это неаккуратно, и это заметно медленнее, чем приведенный выше синтаксис массива, но я просто не могу в этом разобраться.
Предложения?
Спасибо.
Комментарии:
1. Выяснить, что получается? Вы получаете сообщение об ошибке? Опубликованный вами код не является «неаккуратным» — просто так создаются гиперссылки. Вы могли назначить обе сразу, если используете что-то вроде
rOut.Range("A1:B1").Offset(iFile).Formula = Array(hyperlinkFormula1, hyperlinkFormula1)
но это на самом деле не какое-либо улучшение, просто большая конкатенация строк.2. Ошибок нет, я просто хотел объединить, Тим, спасибо. Однако, как бы мне объявить hyperlinkFormula1?
3. В виде массива строк, например
Array("=HYPERLINK(""urlHere"", ""textHere"")", "=HYPERLINK(""url2Here"", ""text2Here"")")