【发布时间】:2015-10-04 12:07:07
【问题描述】:
我有一张 Excel 表格,当通过即插即用扫描仪扫描时,它会进行条码扫描(二维/QR 条码,格式类似于 SN1234567 7654321 PA01234-5 ABC),并将所述条码解析为右侧的单个单元格,空间为分隔符。现在,在此解析之后,我有一个单元格使用 excel 超链接函数、Hlink 宏(如下所示)和 vlookup 函数的组合来使用解析的信息在不同的工作表上查找超链接。现在,我正在尝试编写一个宏,以便一旦扫描此条码并触发、解析工作表更改并找到超链接,就会自动单击超链接。 (我正在使用这个系统来尝试“防止”操作员无法正确输入数字的过程。)无论如何,我的工作簿的屏幕截图和我目前使用的所有代码都将在下面,请你帮帮我解决这个问题?
上述电子表格的屏幕截图
工作表更改代码:
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
在共享点链接单元格中使用此公式查找并提取不同页面上单元格的超链接。 =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)))
编辑(为清楚起见):我发布的所有这些代码当前都在工作,我遇到的问题是自动(唯一的用户输入是将所述条形码扫描到 excel 中)按照 H 列中生成的超链接。
编辑 2:为了提供更多信息,我只是尝试添加此代码 ActiveWorkbook.FollowHyperlink 地址:=Range("H3").Address, NewWindow:=False, AddHistory:=True 在 textsplit 调用之后的工作表中更改子。此实现产生错误“运行时错误'-2147221014(800401ea)':无法打开指定的文件。”
我认为这个错误是由于 H3 的值是超链接函数的“友好名称”部分。这意味着当此宏尝试“单击”或跟随 H3 时,它遇到了值 4512517_PA06872-1 而不是跟随它所需的实际超链接。
【问题讨论】:
-
你有什么问题?从您的问题中不清楚...
-
我正在尝试编写一个宏,以便一旦扫描此条码并且触发、解析并找到超链接后,自动单击超链接。但我无法让这个宏为我工作。
-
您看到了什么行为? worksheet_change 没有被触发吗?不知道如何点击超链接?得到错误?只是想弄清楚要回答什么问题。 :-)
-
不,我发布的所有代码目前都在工作。当我扫描扫描单元格中的条形码时,它会自动对其进行解析,并且在解析右侧的 H 列中识别出超链接。但是,我的尝试是向 textsplit sub 或工作表更改事件添加代码(例如 Range("H3").Hyperlinks(1).Follow (True)),但均未成功,给我留下诸如“Run -error”9 之类的错误“下标超出范围”。非常感谢您的宝贵时间!
-
酷。如果您编辑您的问题以包含您的确切问题(尝试访问超链接时出现错误)、生成错误的代码以及代码中错误的位置,这将很有帮助(并吸引更好的答案)尽可能密切地识别。