2014-02-05 68 views
2

我使用代码从Outlook.msg文件中填充字段值(例如主题,发件人等)的Excel工作表。 Outlook.msg文件与Excel文件位于同一文件夹中。使用VBA输入公式中的公式给出1004

如果我可以在这个Excel文件中对这些消息进行超链接,那将很方便。我希望超链接以'动态'的方式,如果我将整个文件夹(使用Outlook.msg文件和Excel工作簿)移动到链接仍然可用的其他位置。我使用下面的代码来创建'dynamic'超链接: Hyperlinkstring =“= HYPERLINK(MID(CELL(”“filename”); 1; FIND(“”[“”; CELL(“”filename“ “)) - 1))” & SNAME

其中SNAME是Outlook.msg文件名 然后我填充具有

工作表( “SHEETNAME”)循环中的细胞的细胞(行,列)。 .Formula = Hyperlinkstring

这给我1004运行时错误。当我在“=”符号之前加上一个额外的空格,如“= HYPERLINK(MID等)... 代码运行良好,单元格被填满,当我手动删除空格时,超链接的作用就像一个魅力。直接工作,有另一种方式

回答

2

当使用.Formula需要在配方中使用逗号,代替分号;(即使你的本地分隔符是分号):

Hyperlinkstring = "=HYPERLINK(MID(CELL(""filename""),1,FIND(""["",CELL(""filename""))-1))" & sName 
Worksheet("sheetname").Cells(Row, Column).Formula = Hyperlinkstring 

或者你可以使用.FormulaLocal而不是.Formula。在这种情况下,你应该使用你的公式中的局部分隔符(即分号;):

Hyperlinkstring = "=HYPERLINK(MID(CELL(""filename"");1;FIND(""["";CELL(""filename""))-1))" & sName 
Worksheet("sheetname").Cells(Row, Column).FormulaLocal = Hyperlinkstring