[英]Open workbooks in filepath and copy sheet 2 to Masterworkbook
I would like to open all workbooks in a filepath
on my hard-drive and then copy table data from sheet 2 to Master workbook with the name of Master. 我想在硬盘驱动器的文件
filepath
打开所有工作簿,然后将表数据从工作表2复制到名称为Master的Master工作簿中。
I found this code and have modified it to suit my needs but I'm stuck. 我找到了这段代码,并对其进行了修改以满足自己的需要,但我遇到了麻烦。
Sub LoopThroughDirectory()
Dim MyFile As String
Dim erow
Dim Filepath As String
Filepath = "C:\home\Se\058 \dxakmh\Desktop\TestMiljö\Prognosverktyg\Sektionsfil\Gruppfiler"
MyFile = Dir(Filepath)
Do While Len(MyFile) > 0
If MyFile = “master.xlsm” Then
Exit Sub
End If
Workbooks.Open (Filepath & MyFile)
Worksheets("FärdigÖnskemål").Range("A4:D4").Select
ActiveWorkbook.Close
erow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
ActiveSheet.Paste Destination:=Worksheets("DataÖnskemål").Range(Cells(erow, 1), Cells(erow, 4))
MyFile = Dir
Loop
End Sub
Any help this friday? 这个星期五有什么帮助吗?
According to your code, it's not clear what Worksheet
is the destination sheet (the one you want to paste to), is it Sheet1
or Worksheets("DataÖnskemål")
. 根据您的代码,不清楚
Worksheet
是目标表(要粘贴到的Worksheets("DataÖnskemål")
),是Worksheets("DataÖnskemål")
Sheet1
还是Worksheets("DataÖnskemål")
。
Anyway, in my code it pastes to Sheet1
, let me know if you meant something else. 无论如何,在我的代码中它将粘贴到
Sheet1
,让我知道您是否还有其他意思。
Code 码
Option Explicit
Sub LoopThroughDirectory()
Dim MyFile As String
Dim erow As Long
Dim Filepath As String
Dim wb As Workbook
Filepath = "C:\home\Se\058 \dxakmh\Desktop\TestMilj?\Prognosverktyg\Sektionsfil\Gruppfiler\"
MyFile = Dir(Filepath)
Do While MyFile <> ""
If Not MyFile Like "master.xlsm" Then
Set wb = Workbooks.Open(Filepath & MyFile)
erow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
wb.Worksheets("DataÖnskemål").Range("A4:D4").Copy Destination:=Sheet1.Range("A" & erow)
wb.Close False
End If
MyFile = Dir()
Loop
End Sub
I would recommend using FileSystemObject instead: 我建议改用FileSystemObject:
Sub LoopThroughDirectory()
Dim MyFile As File
Dim erow As Long
Dim Filepath As String
Dim wb As Workbook
Dim FSO As New Scripting.FileSystemObject
Filepath = "C:\home\Se\058 \dxakmh\Desktop\TestMilj?\Prognosverktyg\Sektionsfil\Gruppfiler"
For Each MyFile In FSO.GetFolder(Filepath).Files
If Not MyFile.Name Like "master.xlsm" Then
Debug.Print MyFile.Path
Set wb = Workbooks.Open(MyFile.Path)
erow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
wb.Worksheets("DataÖnskemal").Range("A4:D4").Copy Destination:=Sheet1.Range("A" & erow)
wb.Close False
End If
Next
End Sub
You have to add Microsoft Scripting Runtime reference to your project. 您必须将Microsoft脚本运行时引用添加到您的项目。 You can read more here
你可以在这里阅读更多
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.