Excel VBA 中的字符串连接因 运行 时间错误而失败

String concatenation in Excel VBA failing with run-time error

为什么:

sDesktopPath = Environ("USERPROFILE") & "\Desktop\"
sTimeStamp = Format(Now(), "yyyymmdd-hh:nn")
sSuffix = "_1Sheet_" & sDateTimeNow

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    sDesktopPath & ActiveSheet.Range("E3").Value & "_1Sheet_" & ".pdf" _
    , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, OpenAfterPublish:=True

工作没有问题,但是:

sDesktopPath = Environ("USERPROFILE") & "\Desktop\"
sTimeStamp = Format(Now(), "yyyymmdd-hh:nn")
sSuffix = "_1Sheet_" & sDateTimeNow

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    sDesktopPath & ActiveSheet.Range("E3").Value & "_1Sheet_" & sTimeStamp & ".pdf" _
    , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, OpenAfterPublish:=True

因运行时错误而失败?

如果我使用 sSuffix 代替 "_1sheet_" & TimeStamp,我会遇到同样的问题。

VBA 编辑器将错误显示在 Export... 语句的最后一行,但该行没有任何变化,我看不到它之前发生的任何变化会破坏语法。

每当发生这种情况时,请尝试调试整个字符串。因此:

Debug.Print sDesktopPath & ActiveSheet.Range("E3").Value & "_1Sheet_" & sTimeStamp & ".pdf" 

您会看到 sTimeStamp 是 "illegal",包含 :。因此,将时间戳从:

sTimeStamp = Format(Now(), "yyyymmdd-hh:nn")

收件人:

sTimeStamp = Format(Now(), "yyyymmdd-hhnn")