EXCEL VBA中的Hyperlinks函数使用

最近某个工作任务需要倒腾各种Excel表格,于是重新拾起了VBA。今天遇到的任务是做一个统计表,统计合并若干个分散的Excel表格,并在统计表中做一个具有超链接功能的目录,点击超链接可以跳转到各个分散的Excel表格中。

这个功能应当由Hyperlinks函数完成,但是实际操作起来发现这个函数里面有好多坑,使用起来并不方便,函数的官方API是这样的:

Expression.Hyperlinks.Add(Anchor, Address, [SubAddress], [ScreenTip], _ [TextToDisplay])

Expression可以是超链接所在的WorkSheet,函数有两个参数是必须的,Anchor是超链接所在的详细区域位置, Address是超链接所要跳转的目标地址。

坑1:跳转目标不是网址,而是其他表格怎么办?

如果想跳转到某个网址,直接在Address中写上网址字符串即可,如下图所示:

With Worksheets(1) 
 .Hyperlinks.Add Anchor:=.Range("a5"), _ 
 Address:="https://example.microsoft.com",
End With

但是如果想跳转到表格,一般情况下,不使用Address,而是将Address置为空,将目标表格地址放到SubAddress中,示例代码如图所示:

        ThisWorkbook.Sheets("汇总").Hyperlinks.Add Anchor:=ThisWorkbook.Sheets("汇总").Cells(i, 3), _
            Address:="", _
            SubAddress:="Sheet2!A1"

注意SubAddress的值必须是"Sheet2!A1"才行,因为根据官方API,这个属性值是字符串表达式,于是第2个坑就来了。

坑2:跳转目标是表格,但是表格的位置不是常量而是变量怎么办?

这个问题百度了很久,网上各路大神也莫衷一是,最后我经过反复尝试,找到了一种解决方案,代码如下:

        ThisWorkbook.Sheets("汇总").Hyperlinks.Add Anchor:=ThisWorkbook.Sheets("汇总").Cells(i, 3), _
            Address:="", _
            SubAddress:="'" & Variant1 & "'!C" & Variant2

如果跳转的目标位置的Sheet是一个变量,那么将Sheet的名字写到Variant1中即可,如果目标表格的行号是一个变量,那么将行号写到Variant2即可。上图中的代码,点击汇总表的第i行第3列,将会跳转到名称为Variant1的Sheet的第Variant2行,第C列中。

具体原因我也不清楚,但是这样解决问题对我来说就够了。如果各位能知其所以然,欢迎在下方给我留言^_^。

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Excel VBA操作Word是指通过ExcelVBA编程语言来控制和操作Word应用程序。下面是Excel VBA操作Word的入门篇。 首先,我们需要在Excel引用Word对象库,这样才能使用Word的相关功能。打开ExcelVBA编辑器,点击菜单栏的"工具",选择"引用",然后勾选"Microsoft Word XX.X Object Library",点击确定。 接下来,我们需要声明一个Word应用程序对象,并创建一个新的Word文档。使用下面的代码可以完成这个任务: ``` Dim wordApp As Object '声明一个Word应用程序对象 Dim wordDoc As Object '声明一个Word文档对象 Set wordApp = CreateObject("Word.Application") '创建一个新的Word应用程序对象 wordApp.Visible = True '设置Word应用程序可见 Set wordDoc = wordApp.Documents.Add '创建一个新的Word文档 ``` 然后,我们可以向Word文档插入文字、设置字体、样式、段落格式等。使用下面的代码可以实现这些操作: ``` wordDoc.Content.Text = "这是一个用Excel VBA操作Word的示例文档" '向文档插入文字 wordDoc.Content.Font.Name = "Arial" '设置字体 wordDoc.Content.Font.Size = 12 '设置字号 wordDoc.Paragraphs(1).Alignment = 1 '设置段落居对齐 ``` 此外,我们还可以向Word文档插入图片、表格、超链接等。使用下面的代码可以实现这些操作: ``` wordDoc.InlineShapes.AddPicture "C:\image.jpg" '插入一张图片 wordDoc.Tables.Add Range:=wordDoc.Range, NumRows:=3, NumColumns:=3 '插入一个3行3列的表格 wordDoc.Hyperlinks.Add wordDoc.Range, Address:="http://www.example.com", TextToDisplay:="点击访问示例网站" '插入一个超链接 ``` 最后,我们需要关闭Word文档和应用程序对象以释放资源。使用下面的代码可以完成这个任务: ``` wordDoc.SaveAs "C:\example.docx" '将文档保存为docx格式 wordDoc.Close '关闭文档 wordApp.Quit '关闭Word应用程序 ``` 以上就是Excel VBA操作Word的入门篇内容。通过这些基础知识,我们可以进一步探索更多复杂的Word操作,如格式控制、文本替换、邮件合并等。希望对你有所帮助!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值