Sql Excel中的超链接不可单击
在我的Excelsheet中,我使用了一个带有sql server数据源的表。 其中一列包括电话号码,另一列包括邮箱地址。 现在我想创建一个超链接,如Sql Excel中的超链接不可单击,sql,excel,vba,Sql,Excel,Vba,在我的Excelsheet中,我使用了一个带有sql server数据源的表。 其中一列包括电话号码,另一列包括邮箱地址。 现在我想创建一个超链接,如tel:0999999或mailto:test@test.com打开默认windows应用程序以启动呼叫或编写电子邮件。 单元格的格式是通用的 不幸的是,超链接是纯文本而不是超链接。我看到的公式类似于=hyperlink(“电话:09999999”;“09999999”)。单击单元格时,按[F2]-键并按return,然后excel将单元格值更改为
tel:0999999
或mailto:test@test.com
打开默认windows应用程序以启动呼叫或编写电子邮件。
单元格的格式是通用的
不幸的是,超链接是纯文本而不是超链接。我看到的公式类似于=hyperlink(“电话:09999999”;“09999999”)
。单击单元格时,按[F2]
-键并按return,然后excel将单元格值更改为“正确”的超链接
我尝试的第二个想法是为所有这些单元格编写一个宏。但是性能不好,我有大约20000行5列,所以excel只运行大约1分钟来创建超链接。
代码如下所示:
lastrow=ActiveSheet.Cells(Cells.Rows.Count,1).End(xlUp).Row
对于i2=4到最后一行
'电话1
工作表(“报告”)。单元格(i2,11)。选择
如果Len(Selection.Value)>0,则
ActiveSheet.Hyperlinks.Add锚定:=选择,地址:=“电话:+CStr(选择),文本显示:=CStr(选择)
如果结束
'电话2
工作表(“报告”)。单元格(i2、12)。选择
如果Len(Selection.Value)>0,则
ActiveSheet.Hyperlinks.Add锚定:=选择,地址:=“电话:+CStr(选择),文本显示:=CStr(选择)
如果结束
'电话3
工作表(“报告”)。单元格(i2、13)。选择
如果Len(Selection.Value)>0,则
ActiveSheet.Hyperlinks.Add锚定:=选择,地址:=“电话:+CStr(选择),文本显示:=CStr(选择)
如果结束
“邮件1
工作表(“报告”)。单元格(i2、14)。选择
如果Len(Selection.Value)>0,则
ActiveSheet.Hyperlinks.Add锚定:=选择,地址:=“mailto:”+CStr(选择),TextToDisplay:=CStr(选择)
如果结束
“邮件2
工作表(“报告”)。单元格(i2、15)。选择
如果Len(Selection.Value)>0,则
ActiveSheet.Hyperlinks.Add锚定:=选择,地址:=“mailto:”+CStr(选择),TextToDisplay:=CStr(选择)
如果结束
下一个i2
我想指出的是,每个国家的Office版本之间都有细微的差异。换句话说,它们使用不同的设置,例如日期设置、分隔符和最后。。。不同的公式
例如,超链接的“标准”(原始、通用)公式是:
=HYPERLINK("tel:09999999","09999999")
我们可以在波兰语版Excel应用程序中使用的本地公式为:
=HIPERŁĄCZE("tel:09999999";"09999999")
如你所见:
;
],则必须使用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
方法
祝你好运 你确定[
;
]吗?公式的原始(美国)版本使用[,
]作为分隔符。@MaciejLos
是欧洲的方式,,
是标准的十进制分隔符。[;]是瑞士德语的正确格式。您是否意识到可以进行许多调整以加快代码速度?避免应该是你清单上的第一位。您应该看到速度有了显著的提高。用范围变量替换select语句会有很大帮助!谢谢你这个好主意!但我希望有更多的速度!:)此外,循环运行excel应用程序“冻结”直到循环结束。