Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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 - Fatal编程技术网

Excel 要从多个电子表格复制的宏

Excel 要从多个电子表格复制的宏,excel,vba,Excel,Vba,我希望得到一些代码,从文件夹中提取文件,并将数据粘贴到目标电子表格中 我有一个文件夹,其中包含所有格式相同的报告,报告每周生成,每周保存到一个新文件夹中,因此我不总是从同一文件夹中拾取文件。我想要一个提供“浏览文件夹”对话框的宏,当我选择文件夹时,它会依次打开该文件夹中的每个Excel文件,复制数据(范围a:W),将其粘贴回目标电子表格,关闭电子表格,然后移到文件夹中的下一个文件 在报告中,标题下的行数并不总是相同的,可以只有一行,也可以有两行以上,因此我还需要使用代码检查每行中是否存在数据,如

我希望得到一些代码,从文件夹中提取文件,并将数据粘贴到目标电子表格中

我有一个文件夹,其中包含所有格式相同的报告,报告每周生成,每周保存到一个新文件夹中,因此我不总是从同一文件夹中拾取文件。我想要一个提供“浏览文件夹”对话框的宏,当我选择文件夹时,它会依次打开该文件夹中的每个Excel文件,复制数据(范围a:W),将其粘贴回目标电子表格,关闭电子表格,然后移到文件夹中的下一个文件


在报告中,标题下的行数并不总是相同的,可以只有一行,也可以有两行以上,因此我还需要使用代码检查每行中是否存在数据,如果只有一行,它将复制该行,如果超过1个,则会将其全部复制。

您可以使用类似的方法在选定文件夹中的文件夹中循环:

Dim sPath As String
Dim sFil As String
Dim FolderPath As String
   Dim diaFolder As FileDialog

   ' Open the file dialog
   Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker)
    diaFolder.AllowMultiSelect = False
    diaFolder.Show
    FolderPath = diaFolder.SelectedItems(1)

     ' Cycle through spreadsheets in selected folder

sPath = FolderPath & "\" 'location of files

sFil = Dir(sPath & "*.csv") 'change or add formats
Do While sFil <> "" 'will start LOOP until all files in folder sPath have been looped       through


Set oWbk = Workbooks.Open(sPath & "\" & sFil) 'opens the file
' do something

oWbk.Close True
sFil = Dir

Loop
Dim sPath作为字符串
将sFil设置为字符串
将FolderPath设置为字符串
“将文件夹设置为文件”对话框
'打开文件对话框
Set diaFolder=Application.FileDialog(msoFileDialogFolderPicker)
diaFolder.AllowMultiSelect=False
diaFolder.Show
FolderPath=diaFolder.SelectedItems(1)
'循环浏览选定文件夹中的电子表格
sPath=文件夹路径和文件的“\”位置
sFil=Dir(sPath&“*.csv”)'更改或添加格式
Do While sFil“”将启动循环,直到文件夹sPath中的所有文件都已循环通过
Set oWbk=Workbooks.Open(sPath&“\”&sFil)”打开文件
“做点什么
oWbk.Close为真
sFil=Dir
环
然后,您可以将代码复制到写有“做某事”的列中