如何将文件名填入单元格?VBA写入公式遇1004错误求助
解决VBA设置提取文件名公式时的Run-Time Error '1004'问题
我懂你碰到的麻烦了——手动输入那个提取文件名的Excel公式完全正常,但用VBA给活动单元格设置公式时就弹出1004错误。这问题其实出在VBA里的字符串引号转义没处理对,咱们来快速搞定它!
错误原因分析
你写的VBA代码里,引号的转义有两处关键问题:
- 公式里的
"["后面多了个多余的空格,导致Excel无法识别正确的公式语法 - 最后用来表示空字符串的引号没转义到位,VBA里需要用四个双引号(
"""")来代表Excel公式里的空字符串("")
修正后的代码
这里提供两种写法,选你习惯的就行:
写法1:和手动输入的A1样式公式一致(更直观)
ActiveCell.Formula = "=SUBSTITUTE(LEFT(CELL(""filename"",A1),FIND(""]"",CELL(""filename"",A1))-1),""["","""")"
写法2:R1C1引用样式(适合需要批量填充的场景)
ActiveCell.FormulaR1C1 = "=SUBSTITUTE(LEFT(CELL(""filename"",R1C1),FIND(""]"",CELL(""filename"",R1C1))-1),""["","""")"
额外优化建议
其实你可以不用指定A1单元格,CELL("filename")默认会返回当前工作簿的文件名,公式能简化不少,对应的VBA代码如下:
ActiveCell.Formula = "=SUBSTITUTE(LEFT(CELL(""filename""),FIND(""]"",CELL(""filename""))-1),""["","""")"
⚠️ 注意:运行这段代码前,请确保当前工作簿已经保存过——如果是新建未保存的工作簿,CELL("filename")会返回空值,同样可能触发错误。
内容的提问来源于stack exchange,提问作者RP_Axis
相关产品推荐
相关产品推荐

