Vba 正在尝试将工作簿保存到用户指定的文件夹
您好,我正在尝试制作一个宏,将报告保存到特定文件夹。我们的文件夹每天都会生成,如Vba 正在尝试将工作簿保存到用户指定的文件夹,vba,excel,Vba,Excel,您好,我正在尝试制作一个宏,将报告保存到特定文件夹。我们的文件夹每天都会生成,如C://Report\u Type/2017/11/10(其中/10是我要将文件保存到的文件夹) 我使用的代码提示用户提供日期,以便找到文件夹,然后根据指定的名称保存文件 但是,当我运行宏时,它会将文件保存在C://Report\u Type/2017/11根文件夹中,忽略基于用户输入的日期。有人能帮我找出哪里错了吗 解释起来有点复杂,但是如果你检查代码,那么它就有意义了 Sub PSSaveFile() D
C://Report\u Type/2017/11/10
(其中/10
是我要将文件保存到的文件夹)
我使用的代码提示用户提供日期,以便找到文件夹,然后根据指定的名称保存文件
但是,当我运行宏时,它会将文件保存在C://Report\u Type/2017/11
根文件夹中,忽略基于用户输入的日期。有人能帮我找出哪里错了吗
解释起来有点复杂,但是如果你检查代码,那么它就有意义了
Sub PSSaveFile()
Dim myVal2 As Variant
Dim myDate As String
Dim mFilePath As String
myVal2 = InputBox("Please enter today's date in mm\dd format")
myDate = Date - 1
mFilePath = "\\sample\sample_emea\sec_REPORTS\APPS\Reports\Regional\sample_security_app\2017\" & myVal2
ActiveWorkbook.SaveAs FileName:=mFilePath & "SampleLogs-" & myDate & "-12352_checked"
End Sub
提前感谢您的帮助 为什么要把它弄得这么复杂?我的意思是,为什么要问你能自动得到的日期 这就是你正在尝试的(未经测试的)吗 事情很少
\/:*?“<>|
因此我们在上述代码中使用了替换(日期-1,“/”,“-”
是的,这是一种更简单的方法,不幸的是,将使用宏的用户经常检查积压,因此她查看的日期并不总是今天或昨天的日期,因此用户输入函数–Rhyfelwr 14分钟前 由于您使用的是InputBox,因此可能需要使用此
Sub PSSaveFile()
Dim FilePath_A As String, FilePath_B As String, FilePath_C As String
Dim sFile As String
Dim Ret As Variant
Ret = InputBox("Please enter date in mm\dd format")
If Ret = "" Then Exit Sub
FilePath_A = "\\sample\sample_emea\sec_REPORTS\APPS\Reports\Regional\sample_security_app\2017\"
FilePath_B = Ret
'~~> Check if the folder path exists
If FileFolderExists(FilePath_A & FilePath_B) Then
FilePath_C = "\SampleLogs-" & Replace(Date - 1, "/", "-") & "-12352_checked.xlsx"
sFile = FilePath_A & FilePath_B & FilePath_C
ActiveWorkbook.SaveAs sFile, 51
Else
MsgBox "The folder path " & FilePath_A & FilePath_B & " doesn't exist"
End If
End Sub
Public Function FileFolderExists(strFullPath As String) As Boolean
On Error GoTo Whoa
If Not Dir(strFullPath, vbDirectory) = vbNullString Then FileFolderExists = True
Whoa:
On Error GoTo 0
End Function
为什么要把它弄得这么复杂?我的意思是,当你能自动得到它的时候,为什么还要问日期 这就是你正在尝试的(未经测试的)吗 事情很少
\/:*?“<>
,因此我们在上述代码中使用Replace(Date-1,“/”,“-”
)是的,这是一种更简单的方法,不幸的是,将使用宏的用户经常检查积压,因此她查看的日期并不总是今天或昨天的日期,因此用户输入函数–Rhyfelwr 14分钟前 由于您使用的是InputBox,因此可能需要使用此
Sub PSSaveFile()
Dim FilePath_A As String, FilePath_B As String, FilePath_C As String
Dim sFile As String
Dim Ret As Variant
Ret = InputBox("Please enter date in mm\dd format")
If Ret = "" Then Exit Sub
FilePath_A = "\\sample\sample_emea\sec_REPORTS\APPS\Reports\Regional\sample_security_app\2017\"
FilePath_B = Ret
'~~> Check if the folder path exists
If FileFolderExists(FilePath_A & FilePath_B) Then
FilePath_C = "\SampleLogs-" & Replace(Date - 1, "/", "-") & "-12352_checked.xlsx"
sFile = FilePath_A & FilePath_B & FilePath_C
ActiveWorkbook.SaveAs sFile, 51
Else
MsgBox "The folder path " & FilePath_A & FilePath_B & " doesn't exist"
End If
End Sub
Public Function FileFolderExists(strFullPath As String) As Boolean
On Error GoTo Whoa
If Not Dir(strFullPath, vbDirectory) = vbNullString Then FileFolderExists = True
Whoa:
On Error GoTo 0
End Function
这只是一个输入错误:
SampleLogs
之前缺少了一个\
,我想:ActiveWorkbook.SaveAs文件名:=mFilePath&“\SampleLogs-”&myDate&“-12352\u选中”
。所以路径和文件名之间必须有一个反斜杠。好吧,该死的,这样一个小小的错误造成了如此巨大的差异。非常感谢你指出这一点!我永远也想不到。你能把它写下来作为一个答案,这样我就可以给你投票了吗?myDate=Date-1
也会给你错误。此外,您没有指定文件扩展名和文件格式numberit将其另存为普通工作簿(如果用户希望将其另存为无宏工作簿,则提示用户),“myDate=Date-1”在我这端工作得非常好,文件名没有问题。“\SampleLogs-”&Date-1&&12352\u已选中”
为您提供了\SampleLogs-28/11/2017-12352_checked
,这将产生问题,因为“/”这只是一个输入错误:在SampleLogs
之前只缺少一个\
我想:ActiveWorkbook.SaveAs文件名:=mFilePath&“\SampleLogs-”&myDate&“-12352_checked”
。所以路径和文件名之间必须有一个反斜杠。好吧,该死的,这样一个小小的错误造成了如此巨大的差异。非常感谢你指出这一点!我永远也想不到。你能把它写下来作为一个答案,这样我就可以给你投票了吗?myDate=Date-1
也会给你错误。此外,您没有指定文件扩展名和文件格式numberit将其另存为普通工作簿(如果用户希望将其另存为无宏工作簿,则提示用户),“myDate=Date-1”在我这端工作得非常好,文件名没有问题。“\SampleLogs-”&Date-1&&12352\u已选中”
为您提供了\SampleLogs-28/11/2017-12352\u检查过的
,这会产生问题,因为“/”是的,这是一种更简单的方法,不幸的是,将要使用宏的用户经常检查积压日志,因此她查看的日期并不总是今天或昨天的日期,因此用户输入函数OK在这种情况下修改文件路径。但请注意我在你的评论下的评论question@Peh:没错。。修正:)是的,这是一种更简单的方法,不幸的是,将使用宏的用户经常检查积压,因此她查看的日期并不总是今天或昨天的日期,因此用户输入函数OK在这种情况下修改文件路径。但请注意我在你的评论下的评论question@Peh:没错。。固定:)