从多个电子表格中复制的宏

时间:2013-02-19 16:49:06

标签: excel excel-vba vba

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

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

在报告中,标题下的行数并不总是相同,只有1行或者可以有2行以上所以我还需要使用代码来检查每行中是否存在数据,如果只是1行将复制该行,如果超过1,则将其全部复制。

1 个答案:

答案 0 :(得分: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

然后,您可以将代码复制到'do something

的列中