如何将一个Excel文件快速保存为200个不同的文件名?

时间:2019-02-25 21:03:28

标签: excel vba

我有一个带有模板的excel文件,可供多个不同的用户填写。我希望文件具有该特定用户的名称。我有一个包含所有不同名称的文本列表。

有没有一种方法可以快速将我的excel模板另存为200个不同的名称?

我找到了一些VBA宏,但是它们出现了一些奇怪的错误,而且我不了解足够的VBA来解释它们。

我尝试过的宏示例(可能完全不合标准)

Dim fileName As String
fileName = "Path" & Range("A1:A200").Text & ".xlsx"
ActiveWorkbook.SaveAs Filename:=fileName, FileFormat:=xlNormal, 
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, 
CreateBackup:=False

我也尝试过

Sub SaveAsA1()
ThisFile = Range("A1").Value
ActiveWorkbook.SaveAs Filename:=ThisFile
End Sub

2 个答案:

答案 0 :(得分:0)

您可以使用命令提示符(在Windows中)复制并重命名特定文件。

  1. 打开“命令提示符”
  2. 将目录更改为保存文件的位置:

    cd C:\您的文件路径

  3. 使用以下命令复制并重命名文件:

    copy Original_File.xlsx“ New_File_Name_User1.xlsx”

此命令将复制一次原始文件并命名。

对于多个文件-您可以在第3步中复制命令,将其粘贴到excel中,并在其中列出所需的所有200个文件名:

copy Original_File.xlsx "New_File_Name_User1.xlsx"
copy Original_File.xlsx "New_File_Name_User2.xlsx"
copy Original_File.xlsx "New_File_Name_User3.xlsx"
copy Original_File.xlsx "New_File_Name_User4.xlsx"
copy Original_File.xlsx "New_File_Name_User5.xlsx"
...
copy Original_File.xlsx "New_File_Name_User200.xlsx"

对于第3步,将所有200条命令复制到excel文件中-并粘贴到命令提示符中。

然后将您的原始文件复制200次并相应地命名。

答案 1 :(得分:0)

您与第一个代码示例非常接近:

Sub Temp()
Dim FileNameArr As Variant, X As Long
FileNameArr = Application.Transpose(Range("A1:A200").Text)
For X = LBound(FileNameArr) To UBound(FileNameArr)
    If FileNameArr(X) <> "" Then ActiveWorkbook.SaveAs fileName:="Path" & FileNameArr(X) & ".xlsx", FileFormat:=xlNormal
Next
End Sub

首先将范围读取到数组,然后循环数组并保存。

我在其中进行了if测试,以确保保存之前结果不是空白,否则空白单元格将使您的代码崩溃。对无效的文件名字符进行测试也是明智的。