我创建了一个Excel文档,该文档从AD导入了包含数据的CSV文件,基本上创建了电话簿,之后将其导出为PDF。但是,有人要求我创建一种轻松地根据字母跳到姓氏的方法。
我想做的是在Excel中创建超链接,该超链接将在PDF转换后继续存在。它们需要动态,因为姓氏的位置每天都会变化。因此,超链接需要在“电话簿”工作表中搜索列A中第一个字母为A-Z的第一个单元,然后再超链接至该单元。我陷入困境,几乎不知道从哪里开始。
PDF转换是通过Powershell进行的,数据导入是通过链接的CSV文件进行的,该文件在每次打开时都会刷新一次数据。从理论上讲,我也可以尝试为每个字母创建一个新的工作表,但是我宁愿避免这样做,因为数据会比我们想要的更细分。
另存为PDF
$workbook.ExportAsFixedFormat($xlFixedFormat::xlTypePDF, 'C:\users\aricci\Phonebook\Telephonebook.pdf')
这是我现在的工作链接。 2个问题,首先是我需要它在Cell 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
答案 0 :(得分:0)
好吧,所以我想通了...这不漂亮,我正在为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