在工作表变更事件后,Excel超链接跟随macros

我有一个Excel工作表,当通过即插即用扫描器扫描时进行条形码扫描(2D / QR条形码,例如SN1234567 7654321 PA01234-5 ABC),并将所述条形码parsing为右边的单个单元格,其中空格为分隔符。 现在parsing后,我有一个单元格使用excel超链接函数Hlinkmacros(如下所示)和一个vlookup函数的组合来使用parsing的信息在不同的工作表上find一个超链接。 现在,我试图编写一个macros,这样一旦扫描了这个条形码,甚至触发,parsing了worksheet_change,并且find超链接,超链接就会自动被点击。 (我正在使用这个系统来尝试“防白痴”的过程,在这个过程中,操作者input的数字是正确的)反正我的工作簿的截图和我目前使用的所有代码都在下面,你能帮我解决这个问题?

所述电子表格的屏幕截图http://imgur.com/C5TJK0o

工作表变更代码:

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 

parsing代码:

 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 

用于在这个formaula的sharepoint链接单元格中查找和提取一个单元格的不同页面上的超链接。 =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)))

编辑(为了清晰):我发布的所有这些代码目前正在工作, 我所拥有的问题是自动 (只有用户input是扫描所述条码为Excel) 跟在H列中生成的超链接

编辑2:给一点点信息,我只是试图添加此代码ActiveWorkbook.FollowHyperlink地址:=范围(“H3”)。地址,NewWindow:= False,AddHistory:= True在工作表中更改分文后textsplit呼叫。 此实现产生了错误“运行时错误”-2147221014(800401ea):无法打开指定的文件。

我认为这个错误是由于H3是超链接函数的“友好名称”部分的价值所致。 这意味着当这个macros试图“点击”或按照H3时,会遇到值4512517_PA06872-1而不是实际需要的超链接。

好,所以这只是你的HLinkmacros,并没有做正确的事情,最简单的方法是直接跟随超链接:

 Sub HLink(rng As Range) If rng(1).Hyperlinks.Count Then rng.Hyperlinks(1).Follow End Sub 

这将自动打开您的默认浏览器去超链接的URL /地址

而困难的方法是引用一个IE应用程序,打开你在其中find的地址,然后使用它,但是如果只打开超链接,那么代码就足够了!