Excel 超链接在 worksheet_change 事件之后跟随宏
Excel hyperlink follow macro after worksheet_change event
我有一个 excel sheet 在通过即插即用扫描仪扫描并解析所述条码时进行条码扫描(格式为 SN1234567 7654321 PA01234-5 A B C 的 2D/QR 条码)到右侧的单个单元格,space 是分隔符。现在在这个解析之后我有一个单元格使用 excel hyperlink 函数和 Hlink 宏(如下所示)和 vlookup 函数的组合来查找 hyperlink使用解析后的信息在另一项工作sheet 上。现在,我正在尝试编写一个宏,以便一旦扫描此条形码并触发、解析 worksheet_change,并找到 hyperlink,hyperlink 就会自动点击。 (我正在使用这个系统来尝试 "idiot-proof" 操作员无法正确输入数字的过程。)无论如何,我的工作簿的屏幕截图和我当前使用的所有代码都在下面,你能帮帮我吗解决这个问题?
上述传播的屏幕截图sheet
工作sheet更改代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range, rng As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("A1:A10")
'Target can be a multi-cell range, so you need to account
' for that possibility
Set rng = Application.Intersect(KeyCells, Target)
If Not rng Is Nothing Then
'prevent re-activating this sub when splitting text...
Application.EnableEvents = False
textsplit Target
Application.EnableEvents = True
End If
Exit Sub
haveError:
Application.EnableEvents = True
End Sub
解析代码:
Sub textsplit(rng As Range)
Dim c As Range, arr
For Each c In rng.Cells
If Len(c.Value) > 0 Then
arr = Split(c.Value, " ")
c.Offset(0, 1).Resize(1, UBound(arr) + 1).Value = arr
End If
Next c
End Sub
Hlink代码:
Function HLink(rng As Range) As String
'extract URL from hyperlink
'posted by Rick Rothstein
If rng(1).Hyperlinks.Count Then HLink = rng.Hyperlinks(1).Address
End Function
在共享点 link 单元格中使用此公式查找并提取不同页面上单元格的 hyperlink。 =HYPERLINK(HLink(INDEX(Table_owssvr[Name],MATCH(Parse!C3&"_"&Parse!D3,Table_owss vr[Name],0))),INDEX(Table_owssvr[Name],MATCH(Parse!C3&"_"&Parse!D3,Table_owssvr[Name],0)))
编辑(为清楚起见):我发布的所有这些代码目前都在工作,我遇到的问题是自动的(唯一的用户输入是扫描所述条形码在 H.
列中生成的 hyperlink 之后进入 excel)
编辑 2:为了提供更多信息,我只是尝试添加这段代码
ActiveWorkbook.FollowHyperlink 地址:=范围("H3").地址, NewWindow:=False, AddHistory:=True
在 worksheet 调用 textsplit 后更改 sub。此实现产生了错误 "Run-time error '-2147221014(800401ea)': Cannot open the specified file."
我认为这个错误是由于 H3 的值是 hyperlink 函数的 "friendly name" 部分。这意味着当这个宏试图 "click" 或遵循 H3 时,它遇到了值 4512517_PA06872-1 而不是实际的 hyperlink 需要跟随它。
好的,这只是您的 HLink 宏没有做正确的事情,最简单的方法是直接点击超链接:
Sub HLink(rng As Range)
If rng(1).Hyperlinks.Count Then rng.Hyperlinks(1).Follow
End Sub
这将自动打开您的默认浏览器以转到URL/address您的超链接。
困难的方法是引用一个 IE 应用程序并打开您在其中找到的地址然后使用它,但如果它只是打开超链接,那么该代码就足够了!
我有一个 excel sheet 在通过即插即用扫描仪扫描并解析所述条码时进行条码扫描(格式为 SN1234567 7654321 PA01234-5 A B C 的 2D/QR 条码)到右侧的单个单元格,space 是分隔符。现在在这个解析之后我有一个单元格使用 excel hyperlink 函数和 Hlink 宏(如下所示)和 vlookup 函数的组合来查找 hyperlink使用解析后的信息在另一项工作sheet 上。现在,我正在尝试编写一个宏,以便一旦扫描此条形码并触发、解析 worksheet_change,并找到 hyperlink,hyperlink 就会自动点击。 (我正在使用这个系统来尝试 "idiot-proof" 操作员无法正确输入数字的过程。)无论如何,我的工作簿的屏幕截图和我当前使用的所有代码都在下面,你能帮帮我吗解决这个问题?
上述传播的屏幕截图sheet
工作sheet更改代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range, rng As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("A1:A10")
'Target can be a multi-cell range, so you need to account
' for that possibility
Set rng = Application.Intersect(KeyCells, Target)
If Not rng Is Nothing Then
'prevent re-activating this sub when splitting text...
Application.EnableEvents = False
textsplit Target
Application.EnableEvents = True
End If
Exit Sub
haveError:
Application.EnableEvents = True
End Sub
解析代码:
Sub textsplit(rng As Range)
Dim c As Range, arr
For Each c In rng.Cells
If Len(c.Value) > 0 Then
arr = Split(c.Value, " ")
c.Offset(0, 1).Resize(1, UBound(arr) + 1).Value = arr
End If
Next c
End Sub
Hlink代码:
Function HLink(rng As Range) As String
'extract URL from hyperlink
'posted by Rick Rothstein
If rng(1).Hyperlinks.Count Then HLink = rng.Hyperlinks(1).Address
End Function
在共享点 link 单元格中使用此公式查找并提取不同页面上单元格的 hyperlink。 =HYPERLINK(HLink(INDEX(Table_owssvr[Name],MATCH(Parse!C3&"_"&Parse!D3,Table_owss vr[Name],0))),INDEX(Table_owssvr[Name],MATCH(Parse!C3&"_"&Parse!D3,Table_owssvr[Name],0)))
编辑(为清楚起见):我发布的所有这些代码目前都在工作,我遇到的问题是自动的(唯一的用户输入是扫描所述条形码在 H.
列中生成的 hyperlink 之后进入 excel)编辑 2:为了提供更多信息,我只是尝试添加这段代码 ActiveWorkbook.FollowHyperlink 地址:=范围("H3").地址, NewWindow:=False, AddHistory:=True 在 worksheet 调用 textsplit 后更改 sub。此实现产生了错误 "Run-time error '-2147221014(800401ea)': Cannot open the specified file."
我认为这个错误是由于 H3 的值是 hyperlink 函数的 "friendly name" 部分。这意味着当这个宏试图 "click" 或遵循 H3 时,它遇到了值 4512517_PA06872-1 而不是实际的 hyperlink 需要跟随它。
好的,这只是您的 HLink 宏没有做正确的事情,最简单的方法是直接点击超链接:
Sub HLink(rng As Range)
If rng(1).Hyperlinks.Count Then rng.Hyperlinks(1).Follow
End Sub
这将自动打开您的默认浏览器以转到URL/address您的超链接。
困难的方法是引用一个 IE 应用程序并打开您在其中找到的地址然后使用它,但如果它只是打开超链接,那么该代码就足够了!