Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 打开文件时,将文件副本保存在特定文件夹中_Excel_Vba_Copy_Save - Fatal编程技术网

Excel 打开文件时,将文件副本保存在特定文件夹中

Excel 打开文件时,将文件副本保存在特定文件夹中,excel,vba,copy,save,Excel,Vba,Copy,Save,我有一个Excel工作簿,被很多人使用,很容易被毁掉 如何通过打开Excel工作簿(文件)自动将副本保存到特定文件夹 Excel工作簿位于SharePoint中,因此我可以在同一位置创建一个名为“Archive”的新文件夹,通过打开该文件,将在此处保存该文件的一个新副本,该文件的名称为“+”DD.MM.YYY HH:MM:SS”。我不确定SharePoint,但如果该文件保存在常规文件夹中,这项工作就可以完成。可以用不同的方法来解决这个问题 将代码保存在VBA编辑器的以下位置。将子工作簿命名为“

我有一个Excel工作簿,被很多人使用,很容易被毁掉

如何通过打开Excel工作簿(文件)自动将副本保存到特定文件夹


Excel工作簿位于SharePoint中,因此我可以在同一位置创建一个名为“Archive”的新文件夹,通过打开该文件,将在此处保存该文件的一个新副本,该文件的名称为“+”DD.MM.YYY HH:MM:SS”。

我不确定SharePoint,但如果该文件保存在常规文件夹中,这项工作就可以完成。可以用不同的方法来解决这个问题

将代码保存在VBA编辑器的以下位置。将子工作簿命名为“
专用子工作簿_Open()
”——以指示excel在打开时应执行代码。 当“过程”字段变为“打开”(图中标记为黄色)时,您可以看到您已成功。

备选方案1:

在这里,我通过编写
“G:\Till\”
来硬编码我的路径。然后我继续添加时间戳并选择哪种格式。请注意,在路径中不能使用分号“:”。一种方法是加上“T”表示时间,然后加上小时+分钟+秒。 在我的示例代码中,结果将是:“数据示例-2019-11-03 T203533.xlsm”

请注意,如果路径不存在,此代码将获得错误1004

Private Sub Workbook_Open()
Dim Fldr As String
Application.DisplayAlerts = False 'Hide any save window pop-up
ActiveWorkbook.SaveCopyAs Filename:="G:\Till\" & "Data Example - " & Format(Now(), "yyyy-MM-dd Thhmmss") & ".xlsm" 'Save the workbook as a copy of the original. Add Hour and timestamp
Application.DisplayAlerts = True
End Sub
备选方案2:

为了使代码更加健壮,我检查了我使用的工作簿的路径,然后检查文件夹“Archive”是否存在。如果它不存在,它将创建文件夹并保存文件的副本

Private Sub Workbook_Open()
Dim Fldr As String
Application.DisplayAlerts = False 'Hide any save window pop-up
Fldr = Dir(Application.ActiveWorkbook.Path & "\Archive\", vbDirectory) 'Check if folder exists. The variable will be empty if no folder exists.

If Fldr = Empty Then 'If no folder exist, the variable "Folder"
    MkDir Application.ActiveWorkbook.Path & "\Archive\" 'Create the folder
End If

ActiveWorkbook.SaveCopyAs Filename:=Application.ActiveWorkbook.Path & "\Archive\" & "Data Example - " & Format(Now(), "yyyy-MM-dd Thhmmss") & ".xlsm"
Application.DisplayAlerts = True
End Sub