excel - 在 excel 工作表的列上创建超链接以打开多层子文件夹
问题描述
我在一张纸上有这样的文件夹和子文件夹 8 层和 500K 记录:
C:\999\236\857\871
C:\999\234\567\874
C:\999\234\567\873
C:\999\234\586\396
C:\999\234\566\458
在测试工作表 A 列中有数据
236857871
234567874
234567873
234586396
234566458
我想创建一个宏来在 A 列中的现有数据上创建一个超链接,这样当我单击数据时,相应的文件夹就会打开。我从下面的 StackOverflow 中移植了一个宏。它只创建一个目的地......它无法为各个记录创建链接。我能得到帮助吗?
Sub HyperlinkNums ()
Dim WK As Workbooks
Dim sh As Worksheet
Dim i As Long
Dim lr As Long
Dim Rng As Range, Cell As Range
Set sh = Workbooks("Bigboss.xlsm").Sheets("Test")
lr = sh.Range("A" & sh.Rows.Count).End(xlUp).Row
Set Rng = sh.Range("A5:A" & lr)
sh.range("A5").Activate
For i = 7 To lr
For Each Cell In Rng
If Cell.Value > 1 Then
sh.Hyperlinks.Add Anchor:=Cell, Address:= _
"C:\999\" & Left(ActiveCell, 3) & "\" & _
Mid(ActiveCell, 4, 3) & "\" & Mid(ActiveCell, 7, 3) & "\" & _
Right(ActiveCell, 3), TextToDisplay:=Cell.Value
End If
Next Cell
Next
End Sub.
解决方案
因此,您的代码中最大的问题是您总是引用ActiveCell
. 您正在使用For Each...Next
循环,并且您应该使用rng
正在循环的对象。
您还有一个冗余循环:For i = 7 To lr
. 你可以摆脱这个。
而且我不太喜欢使用半保留关键字作为变量,所以我将cell
变量稍微重命名为cel
. 我认为这可能是您正在寻找的:
Option Explicit
Sub HyperlinkNums()
Dim WK As Workbooks
Dim sh As Worksheet
Dim lr As Long
Dim Rng As Range, Cel As Range
Set sh = Workbooks("Bigboss.xlsm").Sheets("Test")
lr = sh.Range("A" & sh.Rows.Count).End(xlUp).Row
Set Rng = sh.Range("A5:A" & lr)
sh.Range("A5").Activate
For Each Cel In Rng
If Cel.Value > 1 Then
sh.Hyperlinks.Add Cel, "C:\999\" & Left(Cel.Text, 3) & "\" & _
Mid(Cel.Text, 4, 3) & "\" & Right(Cel.Text, 3), _
TextToDisplay:=Cel.Text
End If
Next Cel
End Sub
另外,我对 的用法有点困惑Mid(ActiveCell, 7, 3)
,它似乎与Right(ActiveCell, 3)
. 我删除了那部分。
推荐阅读
- javascript - 在 vue.js 中删除重复
- android - 白名单 Google Vision Barcode API 依赖项 - BarcodeDetector.IsOperational false
- python - 如何防止 print() 重复每一行?
- angular - 为什么 DOM 的 Angular 没有像打字稿那样的类型安全?
- scala - 线程“主”java.io.FileNotFoundException 中的异常:t.txt(没有这样的文件或目录)
- android - 在 Android 应用程序中检测通知“发送者/触发器”
- android - 无法正确测量图标
- sql-server - 如何设置 Microsoft SQL Server 脚本或存储过程的最长执行时间
- c# - 在 Web API 中处理 API 中长时间运行的 SQL 脚本(30 分钟)
- wpf - window.postMessage VS window.chrome.webview.postMessage