我正在使用一个宏打开每个excel文件,该文件位于包含宏的工作簿(我将其称为主工作簿)所在的文件夹中,并复制第一个电子表格中的所有数据,然后粘贴它们进入新工作表的主工作簿。我在网上发现了一些非常有用的代码,我做了一些修改。一切似乎工作得很好,除了这个代码打开文件夹中的每个文件(在Do Until循环中),它打开了一半。
我希望能够避免这种情况,而无需直接引用主电子表格的名称,以防有人重命名。
是否有一个简单的命令,如果它试图打开自己,会跳过循环中的剩余代码?
代码如下:
Sub CombineWSs()
Dim wbDst As Workbook
Dim wbSrc As Workbook
Dim wsSrc As Worksheet
Dim MyPath As String
Dim strFilename As String
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.ScreenUpdating = False
MyPath = ThisWorkbook.Path
Set wbDst = ThisWorkbook
strFilename = Dir(MyPath & "\*.xls", vbNormal)
If Len(strFilename) = 0 Then Exit Sub
Do Until strFilename = ""
Set wbSrc = Workbooks.Open(Filename:=MyPath & "\" & strFilename)
Set wsSrc = wbSrc.Worksheets(1)
'copy the data
wbSrc.ActiveSheet.UsedRange.Select
Selection.Copy
'create a new worksheet in this master file
wbDst.Sheets.Add After:=Sheets(Sheets.Count)
'paste the data into master file's new sheet
wbDst.Sheets(wbDst.Worksheets.Count).Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
wbSrc.Close False
strFilename = Dir()
Loop
wbDst.Worksheets(1).Delete
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:2)
在我们的循环中放置一个If
块
Do Until strFilename = ""
If strFilename <> wbDest.Name Then 'since you already set wbDest = ThisWorkbook
'... rest of code
End If
Loop