以下代码段抛出错误52 - 错误的文件名或编号,我不知道原因:
Private Sub InitializeLogFile()
Dim fileNumber As Integer
filename = Left(ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1))
LOG_FULL_FILENAME = "D:\data\" & Environ("USERNAME") & "\My Documents\" + filename + "_" + Format(Now, "yyyymmdd_hh:mm:ss") + ".log"
MsgBox LOG_FULL_FILENAME
fileNumber = FreeFile
MsgBox fileNumber
Open LOG_FULL_FILENAME For Append As #fileNumber
Print #fileNumber, Date & " - " & ThisWorkbook.Name & " opened. "
Print #fileNumber,
Close #fileNumber
End Sub
有人可以指出我的错误吗?
答案 0 :(得分:6)
错误在这一行:
LOG_FULL_FILENAME = "D:\data\" & Environ("USERNAME") & "\My Documents\" + filename + "_" + Format(Now, "yyyymmdd_hh:mm:ss") + ".log"
具体来说,来自Format(Now, "yyyymmdd_hh:mm:ss")
您无法在文件名中添加:
文件名不能包含\/:*?"<>|
尝试:Format(Now, "yyyymmdd_hhmmss")
答案 1 :(得分:0)
首先,使用Option Explicit
并初始化所有变量。
其次,如果工作簿名称是例如。 “Book1”,然后(InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1)
导致-1。并且调用Left(..., -1)
会产生运行时错误。
使用调试器,你会看到。