当我使用 .在文件名中?

问题描述 投票:0回答:1

我的电子表格中有一个按钮,可以自动保存当前日期时间的文件。

这是我的代码,不起作用:

Sub save_update()

Dim path As String
Dim proj_id As String
Dim proj_title As String
Dim timeperiod As String

path = Application.ActiveWorkbook.path
proj_id = ActiveWorkbook.Sheets("master").Range("A2").Value
proj_title = ActiveWorkbook.Sheets("master").Range("A3").Value
timeperiod = Format(DateTime.Now, "yyyy_mm_dd hh.mm.ss")

ActiveWorkbook.SaveAs FileName:=path & "\" & timeperiod & " " & proj_id & " " & proj_title & "Internal Tool", FileFormat:=xlOpenXMLWorkbookMacroEnabled

End Sub

当我按下按钮时,文件会保存,但文件扩展名未定义。

具体来说,问题在于在

.
中使用
timeperiod
。用下划线分隔时间可以使其正常工作,但是使用下划线来表示时间很恶心,并且违反了我的格式标准。此外,当同时使用下划线来分隔日期时,也很难破译。

下面的示例正确保存文件:

timeperiod = Format(DateTime.Now, "yyyy_mm_dd hh_mm_ss")

请让我知道我做错了什么并帮助我使用

hh.mm.ss

谢谢你。

excel vba
1个回答
0
投票

如果您使用

ActiveWorkbook.SaveAs
(或
Save
),Excel 将检查文件名。如果它不包含扩展名,Excel 将附加您指定的文件类型的默认扩展名。对于
xlOpenXMLWorkbookMacroEnabled
,这将是
.xlsm
,对于
xlOpenXMLWorkbook
,这将是
.xlsx
,您说出它的名字即可。

但是,如果文件名已经包含扩展名,Excel 会保持原样(即使是错误的,您也可以将 Excel 文件命名为“.docx”)。判断文件名中是否已存在扩展名的唯一方法是检查是否存在点。当您用“.”写日期时作为分隔符,Excel(不仅是 Excel)将看到最后一个“.”之后的所有内容。作为扩展。

修复方法很简单(评论中已经提到):手动将扩展名添加到文件名中。我建议使用中间变量:

Dim filename As String
filename = path & "\" & timeperiod & " " & proj_id & " " & proj_title & "Internal Tool" & ".xlsm"
ActiveWorkbook.SaveAs FileName:=filename, FileFormat:=xlOpenXMLWorkbookMacroEnabled
© www.soinside.com 2019 - 2024. All rights reserved.