Excel中的自动超链接?

4
我正在从一个SSAS服务器中提取数据,用户可以使用任何工具连接(通常是Excel 2007)。我们希望在某些单元格中提供URL,并希望Excel将其识别为超链接并进行格式化。
当我们将URL放入单元格中时,它只会呈现为纯文本。如果您触摸该单元格并再次单击,则Excel会将其激活为链接。
如果您直接从SQL或CSV文件中获取数据,则会出现相同的行为,我们在这里对SSAS的使用没有什么特殊之处。
有人知道如何使这些自动呈现为链接吗?我们无法控制电子表格的生成,因此宏不可用。
编辑:刚刚收到Meff的回复。好建议,但我忘记提到我们显示URL的位置是钻取操作的目标。

谢谢提及 - 如果您正在使用钻取功能,是否已经查看了http://asstoredprocedures.codeplex.com/wikipage以清理列名称?这也将允许您更多地控制钻取的输出 - 因为我发现Excel将DateTime度量视为小数,并且调整ASSP程序集链接源代码使我能够改变它 :) - Meff
4个回答

3

我认为没有宏是不可能实现的。

在Excel单元格中的超链接与单元格的值无关。它是一个单独的对象,与单元格相关联。将超链接添加到单元格的完全功能方法是通过Excel菜单项“插入” -> “超链接”进行的。

当用户输入诸如“http:// ...”,“https:// ...”或“ftp:// ...”等值时,添加超链接的事实只是GUI快捷方式,具有与“插入” -> “超链接”相同的效果。在您的示例中,当用户“触摸”单元格时,他们实际上将“http:// ...”值输入单元格,并调用Insert -> Hyperlink的GUI快捷方式。但是,当通过VBA或内置Excel功能(例如“数据” ->“导入外部数据”)编程输入值时,不会调用快捷方式。

因此,在没有某种形式的宏的情况下,使这些任意数据导入呈现适当的超链接值确实是一项挑战。如果您可以说服用户安装一个简单的Excel插件,则可以提供一个菜单项,该菜单项运行以下简单代码:

Dim cell as Range : For Each cell in Selection.Cells // could also use Range("A1").CurrentRegion.Cells or similar
    If Left(cell.Value, 7) = "http://" Or Left(cell.Value, 8) = "https://" Or Left(cell.Value, 6) = "ftp://" Then
        Call cell.HyperLinks.Add(cell, cell.Value)
    End If
Next cell

用户在导入/刷新数据后可以调用此功能。显然,这并不理想,因为它依赖于用户采取额外的步骤才能呈现超链接。

为什么不将上述方法合并到一个通用按钮中,该按钮可以导入/刷新并更改超链接。他们不再使用传统的刷新按钮,而是使用您提供的新按钮,这仍然只需要一步。 - guitarthrower
是的,这也可以做到,这不是一个坏主意。唯一的缺点是代码需要更复杂,并且需要说服用户使用与他们当前数据来源不同的替代方法。然而,后者可能比说服他们在导入后按下额外按钮以激活超链接更容易,但也可能不是。 - Adam Ralph
谢谢大家。"不可能"是一个好的答案,也是我所预期的。但现在它在Stack Overflow上了,供所有人谷歌搜索。 - NeedHack

1

1

没有使用VBA......我发现最简单的方法就是录制宏并将快捷键应用于宏(比如ctrl-L)。最终用户知道如果他们想要激活“链接”,只需点击CTRL-L即可。 我的宏记录为......高亮显示列,单击数据,文本到列,下一步,下一步,下一步,完成),然后再点击左上角单元格a1以确保操作正确。我不知道为什么必须将文件保存为xlsm文件(2013年版本)。


0
手动更新多个链接的简单方法是首先将单元格设置为超链接,然后仅复制链接的值到已经格式化的单元格中。也就是说,在您的目标范围内创建一个活动超链接单元格,并将其复制到该范围。验证这些单元格现在作为HTML链接处于活动状态。然后,将您的“文本”超链接粘贴为值覆盖这些单元格,它们应该会激活。

这个不像预期的那样工作 - 请忽略(或者如果你找到了如何让它工作,请更新!) - John Osborn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接