【问题标题】:Hyperlink in Excel not ClickableExcel中的超链接不可点击
【发布时间】:2018-11-07 16:07:48
【问题描述】:

在我的 Excelsheet 中,我使用了一个带有来自 sql-server 的数据源的表。 其中一列包含电话号码,另一列包含邮件地址。 现在我想创建一个像tel:09999999mailto:test@test.com 这样的超链接来打开默认的windows 应用程序来开始通话或写电子邮件。 单元格的格式是通用的。

不幸的是,超链接是纯文本而不是超链接。我看到像=hyperlink("tel:09999999";"09999999") 这样的公式。当我单击单元格时,按[F2]-键并按回车键,然后excel将单元格值更改为“正确”的超链接。

我尝试的第二个想法是为所有这些单元格编写一个宏。但性能不好,我有大约 20000 行 5 列,所以 excel 运行大约 1 分钟只用于创建超链接。 代码如下:

lastrow = ActiveSheet.Cells(Cells.Rows.Count, 1).End(xlUp).Row
For i2 = 4 To lastrow
    'Phone1
    Worksheets("Report").Cells(i2, 11).Select
    If Len(Selection.Value) > 0 Then
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="tel:" + CStr(Selection), TextToDisplay:=CStr(Selection)
    End If

    'Phone2
    Worksheets("Report").Cells(i2, 12).Select
    If Len(Selection.Value) > 0 Then
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="tel:" + CStr(Selection), TextToDisplay:=CStr(Selection)
    End If

    'Phone3
    Worksheets("Report").Cells(i2, 13).Select
    If Len(Selection.Value) > 0 Then
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="tel:" + CStr(Selection), TextToDisplay:=CStr(Selection)
    End If
    'Mail1
    Worksheets("Report").Cells(i2, 14).Select
    If Len(Selection.Value) > 0 Then
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="mailto:" + CStr(Selection), TextToDisplay:=CStr(Selection)
    End If

    'Mail2
    Worksheets("Report").Cells(i2, 15).Select
    If Len(Selection.Value) > 0 Then
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="mailto:" + CStr(Selection), TextToDisplay:=CStr(Selection)
    End If
Next i2

【问题讨论】:

  • 您确定 [;] 吗?原始(美国)版本的公式使用 [,] 作为分隔符。
  • @MaciejLos ; 是欧洲方式,, 是普通的十进制分隔符。
  • [;] 是瑞士德语的正确格式。
  • 您意识到可以进行许多调整来加快您的代码速度吗? cpearson.com/excel/optimize.htm 并且 avoiding select 应该在您的列表中排在第一位。您应该会看到速度显着提高。
  • 用范围变量替换选择语句有很大帮助!感谢这个好主意!但我想要更快的速度! :) 当循环运行时,excel 应用程序“冻结”直到循环结束。

标签: sql excel vba


【解决方案1】:

我想指出的是,每个国家/地区的 Office 版本之间存在细微差别。换句话说,它们使用不同的设置,例如日期设置、分隔符,最后......不同的公式。

例如,超链接的“标准”(原始、通用)公式是:

=HYPERLINK("tel:09999999","09999999")

我们可以在波兰语版本的 Excel 应用程序中使用的本地公式是:

=HIPERŁĄCZE("tel:09999999";"09999999")

如你所见:

  1. 函数名与原名不同
  2. “公式分隔符”不同于原来的

您可以在此处找到有关它的更多详细信息:

Range.Formula

Range.FormulaLocal

Application.International Property (Excel).

因此,如果您想通过使用 [;] 的 VBA 代码插入公式,则必须使用 FormulaLocal 属性。如果您想使用Formula 属性插入公式,则必须注意使用正确的分隔符!

所以,插入公式的保存方式应该是得到一个表格:

'English (universal way)
oSheet.Range("A1").Formula = "=HYPERLINK(""tel:00009"",""000009"")"
'German
oSheet.Range("A1").FormulaLocal = "=HYPERLINK(""tel:00009""" & Application.International(xlListSeparator) & """000009"")"

至于您的代码...您已收到有关使用 Select 方法的警告。

祝你好运!

【讨论】:

    猜你喜欢
    • 2016-07-11
    • 2016-04-20
    • 2020-12-04
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    相关资源
    最近更新 更多