我在其自己的文件夹中有一个模板文件,在这里我将数据从不同目录的一堆定期文件中复制到其中。我试图自动化的过程是将数据从第一个定期文件复制到模板中,保存生成的提要模板并将其命名为第一个数据源文件(在示例中为“ 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"]]?????
由于我没有编程方面的基本知识,但是记录和清理了一些宏行,因此我真的很困在“复制文件名并另存为粘贴”步骤中。我认为在整个过程中有一种更有效的方法,但是现在我只想让第二部分可行。
如果您认为在尝试类似的东西之前确实需要一定的基础,只需给我一些关键词以适应我的学习。
预先感谢;)
答案 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