Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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_Loops - Fatal编程技术网

Excel 将工作簿与其他工作簿一起保存';姓名

Excel 将工作簿与其他工作簿一起保存';姓名,excel,vba,loops,Excel,Vba,Loops,我在自己的文件夹中有一个模板文件,我将数据从不同目录的一堆定期文件复制到其中。我尝试自动化的过程是将数据从第一个周期性文件复制到模板中,保存生成的反馈模板,将其命名为第一个数据源文件(示例中为“1”),然后返回到原始的空模板,以便将该过程与其余周期性文件循环 我在这一点上的笨拙尝试如下: 我首先将数据从“1”复制到“模板”: 然后我想将添加了数据的“template”保存为“1.xlsx”,但保存到template文件夹中 Windows("1.xlsx").Activate [[ActiveW

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

我在这一点上的笨拙尝试如下:

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

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

Windows("1.xlsx").Activate
[[ActiveWorkbook.Name.Copy]]?????
Windows("template.xlsx").Activate
[[Saveas.Paste & ".xlsx"]]?????
由于我没有编程方面的基本知识,只是录制和清理了几行宏,我真的被困在了“复制文件名并另存为粘贴”这一步。我假设有一种更有效的方法来处理整个过程,但现在我只想让第二部分尽可能地工作

如果你认为在尝试这样的东西之前我真的需要一些基础,那就给我一些关键词来说明我的学习


提前感谢;)

在发现名称为文件副本后,我让整个循环对同一目录中的所有文件都起作用:

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
Dim xFd As FileDialog
Dim xFdItem作为变量
Dim xFileName作为字符串
设置xFd=Application.FileDialog(msoFileDialogFolderPicker)
如果xFd.Show=-1,那么
xFdItem=xFd.SelectedItems(1)和Application.PathSeparator
xFileName=Dir(xFdItem&“*.xls*”)
当xFileName“”时执行此操作
打开工作簿(xFdItem&xFileName)
活动工作簿。工作表(1)。激活
范围(“A2”)。选择
工作簿。打开的文件名:=_
“C:\sample\template\template.xlsx”
工作簿(“模板”)。工作表(1)。范围(“A2”)。值2=_
ActiveWorkbook.Sheets(1).范围(“A2”).值2
活动工作簿。保存
活动工作簿。关闭
文件副本“C:\sample\template\template.xlsx”,“C:\sample\out\template.xlsx”
将“C:\sample\out\template.xlsx”命名为“C:\sample\out\”&
ActiveWorkbook.Name
活动工作簿。保存
活动工作簿。关闭
以
xFileName=Dir
环
如果结束

有什么建议可以打磨这些超粗线条吗?就像建议一样。。。打开两个工作簿后,只需放置:
工作簿(“模板”).Sheets(?).Range(“A2”).Value2=ActiveWorkbook.Sheets(1).Range(“A2”).Value2
。只要把你的工作表,因为你没有提到它,你可以删除所有这些激活,复制,粘贴…我已经编辑你的代码。只需确保模板上的表格,因为我放置了1,我不确定。非常有用@DavidGarcíaBodego!这一改进隐藏了代码,但也释放了在步骤之间保存剪贴板数据的过程。谢谢
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