代码之家  ›  专栏  ›  技术社区  ›  NeedHack

Excel中的自动超链接?

  •  4
  • NeedHack  · 技术社区  · 16 年前

    我将公开来自SSAS服务器的数据,用户可以使用他们喜欢的任何工具(在实践中通常是Excel2007)连接到该服务器。我们希望在某些单元格中提供URL,并希望Excel将其识别为超链接,并相应地激活和格式化。

    当我们将一个URL放到一个单元格中时,它只是呈现为纯文本。如果触摸单元格并再次单击,则Excel会将其激活为链接。

    如果您直接从SQL或csv文件中获取数据,也会发生同样的行为,我们在这里使用s s a s没有什么特别之处。

    有人知道如何自动将这些渲染为链接吗?我们无法控制电子表格的生成,因此宏已不可用。

    编辑:

    刚收到MEFF的回复。好的,不过我忘了提一下,我们显示URL的地方是钻取操作的目标。

    4 回复  |  直到 12 年前
        1
  •  3
  •   Adam Ralph    16 年前

    我不相信没有宏这是可能的。

    Excel单元格中的超链接与单元格的值无关。它是与单元关联的独立对象。向单元格添加超链接的完整功能方法是通过Excel菜单项“插入”->超链接。

    当用户输入“http://…”、“https://…”或“ftp://…”等值时添加超链接的事实只是一个与insert->超链接具有相同效果的GUI快捷方式。在您的示例中,当用户“接触”单元格时,他们会有效地在单元格中输入“http://…”值,并调用用于插入的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
    

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

        2
  •  1
  •   Meff    16 年前

    查看SSAS中的URL操作,这允许它们右键单击单元格,并可以转到右键单击菜单中的链接:

    http://timlaqua.com/2009/03/ssas-cube-action-cells-target-type-url-action-type-example/

        3
  •  1
  •   Brian Connell    12 年前

    如果没有VBA,我发现最简单的方法就是录制宏,并将快捷键(如ctrl-l)应用于宏。最终用户知道,如果他们想激活“链接”,就单击ctrl-l。 我的宏被记录为…突出显示该列,单击“数据”、“文本到列”、“下一步”、“下一步”、“下一步”、“完成”),然后单击左上角的单元格A1以获得良好的度量。我不得不在2013年将文件保存为一个XLSM文件(不知道为什么)

        4
  •  0
  •   John Osborn    13 年前

    手动更新许多链接的一个简单方法是使用“将单元格设置为以超链接开头”,然后仅将链接的值复制到已格式化的单元格。也就是说,在目的地中,创建一个活动的超链接单元格,并将其复制到该区域。验证单元格现在是否作为HTML链接处于活动状态。然后,获取“文本”超链接,并将新链接作为值粘贴到这些单元格的顶部,它们应该被激活。

    推荐文章