我正在尝试在Excel中编写一个VBA脚本,它将保存文件并提供预定的名称。其中一个标准是,如果它没有超过上午11点,那么它应该添加到文件名“H12”。如果超过上午11点,则应添加“H16”。
到目前为止,这是关于这个特定部分的内容(还有更多与此处无关的代码:
Dim SaveTime As Integer
SaveTime = Round(Timer / 3600, 0)
dt = Format(CStr(Now), "yyyy_mm_dd")
FolderName = "path/to/file"
If SaveTime < 11 Then
With Destwb
.SaveAs FolderName _
& "\" & Destwb.Sheets(1).Name & dt & "H12", _
FileFormat:=FileFormatNum
.Close False
End With
Else
With Destwb
.SaveAs FolderName _
& "\" & Destwb.Sheets(1).Name & dt & "H16", _
FileFormat:=FileFormatNum
.Close False
End With
End If
除了此部分之外,脚本正常工作,因为它始终将文件保存为“H16”。 45分钟前就跑了,应该把它写成“H12”。我确信我没有正确地进行时间比较。我试过比较if dt < "11:00"
,但这也不起作用。
有人可以帮我一把吗?
提前致谢!
编辑:添加了最后一个细节。
答案 0 :(得分:1)
虽然我不完全确定你的错误是什么(Err会导致哪一行#?),但我希望这可以帮助你解决问题
(...)
Dim SaveTime As Integer
SaveTime = Hour(Now)
FolderName = "C:\Users\b036081\NoBackupData"
FileFormatNum = 51 ' that's xlsx without macros
With Destwb
If SaveTime < 11 Then
.SaveAs FolderName _
& "\" & .Sheets(1).Name & dt & "H12", FileFormatNum
'.Close False
Else
.SaveAs FolderName _
& "\" & .Sheets(1).Name & dt & "H16", FileFormatNum
'.Close False
End If
End With
/
- 占位符中使用了FolderName
,但我相信您知道必须使用\
作为VBA中的路径分隔符SaveTime = Round(Timer / 3600, 3)
。如果您的目标是提取日期的小时,而不是例如在5
返回04:35
,则可以使用类似Hour(Now)
的内容,返回一个整数With Destwb
包裹在If
周围,而不是相反,这会稍微清理你的代码编辑:使用工作解决方案更新代码