用其他工作簿的名称保存工作簿

时间:2019-10-19 17:14:40

标签: excel vba loops

我在其自己的文件夹中有一个模板文件,在这里我将数据从不同目录的一堆定期文件中复制到其中。我试图自动化的过程是将数据从第一个定期文件复制到模板中,保存生成的提要模板并将其命名为第一个数据源文件(在示例中为“ 1”),然后返回到原始空模板中。以便使该过程与其他定期文件循环进行。

到目前为止,我笨拙的尝试如下:

我首先将数据从“ 1”复制到“模板”:

Workbooks.Open fileName:= _
    "C:\sample\template\template.xlsx"
Workbooks.Open fileName:= _
    "C:\sample\1.xlsx"

Windows("1.xlsx").Activate
Range("A2").Select
Selection.Copy
Windows("template.xlsx").Activate
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

然后我想将添加了数据的“模板”另存为“ 1.xlsx”,但要保存到模板文件夹中。

Windows("1.xlsx").Activate
[[ActiveWorkbook.Name.Copy]]?????
Windows("template.xlsx").Activate
[[Saveas.Paste & ".xlsx"]]?????

由于我没有编程方面的基本知识,但是记录和清理了一些宏行,因此我真的很困在“复制文件名并另存为粘贴”步骤中。我认为在整个过程中有一种更有效的方法,但是现在我只想让第二部分可行。

如果您认为在尝试类似的东西之前确实需要一定的基础,只需给我一些关键词以适应我的学习。

预先感谢;)

1 个答案:

答案 0 :(得分:1)

发现名称为 FileCopy 后,我发现整个循环适用于同一目录中的所有文件:

Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName As String
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do While xFileName <> ""
With Workbooks.Open(xFdItem & xFileName)

ActiveWorkbook.Sheets(1).Activate
Range("A2").Select

Workbooks.Open fileName:= _
"C:\sample\template\template.xlsx"

Workbooks("template").Sheets(1).Range("A2").Value2 = _
ActiveWorkbook.Sheets(1).Range("A2").Value2

ActiveWorkbook.Save
ActiveWorkbook.Close

FileCopy "C:\sample\template\template.xlsx", "C:\sample\out\template.xlsx"

Name "C:\sample\out\template.xlsx" As "C:\sample\out\" & 
ActiveWorkbook.Name

ActiveWorkbook.Save
ActiveWorkbook.Close

End With
xFileName = Dir
Loop
End If