0

以下代码段抛出错误 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

有人可以指出我的错误吗?

4

2 回答 2

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")

于 2012-10-31T16:42:00.507 回答
0

首先,使用Option Explicit并初始化所有变量。

其次,如果工作簿名称是例如。“Book1”,然后(InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1)结果为 -1。调用Left(..., -1)会产生运行时错误。

使用调试器,你会看到。

于 2012-10-31T15:48:16.223 回答