如何用VBA将Excel单元格内容赋值给字符串以命名文件?
解决方案
你的代码问题出在获取单元格A18内容的语法错误,以及日期作为文件名时可能包含Windows系统不允许的字符(比如/),以下是修正后的完整代码:
Dim xx As String Dim Path As String Dim FileNumber As Integer Dim k As Integer Dim ws As Worksheet ' 直接引用工作表,避免使用Select(更高效且不易出错) Set ws = ThisWorkbook.Sheets("html") ' 获取A18的日期并格式化为合法文件名格式(yyyy-mm-dd,无非法字符) xx = Format(ws.Range("A18").Value, "yyyy-mm-dd") Path = "C:\BridgeResultsTranslator\session " & xx & ".html" FileNumber = FreeFile Open Path For Output As FileNumber For k = 1 To 1770 Print #FileNumber, ws.Cells(k, 1).Value Next k Close FileNumber
关键修正点说明:
- 替换错误的
xx = cell(A18)为Format(ws.Range("A18").Value, "yyyy-mm-dd"):- VBA中引用单元格需用
Range("A18")或Cells(18, 1),而非cell(A18)(拼写错误且语法不符合规范) - 使用
Format函数将日期转为yyyy-mm-dd格式,避免文件名出现/等Windows禁止的字符(文件名不能包含\ / : * ? " < > |)
- VBA中引用单元格需用
- 移除
Sheets("html").Select,改用Set ws = ThisWorkbook.Sheets("html")直接引用工作表,避免因工作表切换导致的错误 - 字符串拼接用
&而非+,VBA中&是专门的字符串连接运算符,比+更可靠(+可能因类型不匹配触发错误)
内容的提问来源于stack exchange,提问作者Malcolm Macleod
相关产品推荐
相关产品推荐

