我正在使用这个C#过程,它将超链接添加到工作簿的G列。它适用于99%的情况,但如果A列中的值中包含'
,则语法不会添加有效的超链接。我以为我在我的代码行中占了特殊字符
if (cellVal == "*,*"
|| cellVal == "*'*"
|| cellVal == "*&*"
|| cellVal == "*-*"
|| cellVal == "*.*")
然而,当单步执行时,总是会转到else
块,我不知道为什么。例如,以下值明显包含'
,但代码再次点击else
块
Joe的车库
杰克的汉堡小屋
拉里的巨型震动
鲍勃的啤酒
我需要在此语法中更改什么才能以正确的方式创建超链接?
public static void AddHyperlinksToExcel()
{
long lr, i;
string cellVal;
WS = xlApp.ActiveWorkbook.ActiveSheet;
lr = WS.Cells[WS.Rows.Count, 2].End(Excel.XlDirection.xlUp).Row;
for (i = 2; i <= lr; i++)
{
Object Anchor = WS.Cells[i, 7];
Object TextToDisplay = Convert.ToString(WS.Cells[i, 9]);
cellVal = WS.Cells[i, 1].Value;
rangeToHoldHyperlink = WS.Range["G" + i];
if (cellVal == "*,*" || cellVal == "*'*" || cellVal == "*&*" || cellVal == "*-*" || cellVal == "*.*")
{
xlApp.ActiveSheet.Hyperlinks.Add(Anchor, "", "'" + cellVal + "'!A1", "", TextToDisplay);
}
else
{
xlApp.ActiveSheet.Hyperlinks.Add(Anchor, "", "'" + cellVal + "'!A1", "", TextToDisplay);
}
}
}
答案 0 :(得分:1)
虽然来自@PhillipH的答案将解决所有或除之外的所有案例。原因是,Excel将apastrophe转换为双引号。例如,在Excel 2016中,我创建了一个名为Joe's Garage
的工作表,并开始录制宏。我遵循的步骤是
1)单击功能区中的“插入” 2)从功能区中选择“超链接”
3)在显示单击的选项的左侧&#39;放置在此文档中&#39;
4)选择要链接到的工作表名称
注意 - 如果您查看您尝试链接到的工作表名称,则其名称已更改为'Joe''s Garage'
5)单击确定
现在你有一个功能完整的超链接,其中包含撇号的值。
这不是C#语法,但这是Excel VBA从宏录制器中呈现的内容,其说明与上述步骤相同
Range("C2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"'Joe''s Garage'!A1", TextToDisplay:="Link To Joe's Garage"
答案 1 :(得分:0)
如果cellVal是System.String,您的代码将无法按预期方式工作.net不支持使用“==”进行通配符匹配。您应该使用cellValue == '*&*'
cellValue.Contains("&")
等