Vba 打开与活动工作簿位于同一文件夹中的所有文件(活动工作簿除外)
我使用一个宏打开包含宏的工作簿(我称之为主工作簿)所在文件夹中的每个excel文件,并复制第一个电子表格中的所有数据,然后将它们粘贴到新工作表上的主工作簿中。我在网上找到了一些非常有用的代码,对它们做了一些修改。一切似乎都很正常,除了当这段代码打开文件夹中的每个文件(在Do-till循环中)时,它会自动打开一半 我希望能够避免这种情况,而不直接引用主数据表的名称,以防有人重命名它 是否有一个简单的命令,如果它试图打开自己,将跳过循环中的剩余代码 代码如下:Vba 打开与活动工作簿位于同一文件夹中的所有文件(活动工作簿除外),vba,excel,Vba,Excel,我使用一个宏打开包含宏的工作簿(我称之为主工作簿)所在文件夹中的每个excel文件,并复制第一个电子表格中的所有数据,然后将它们粘贴到新工作表上的主工作簿中。我在网上找到了一些非常有用的代码,对它们做了一些修改。一切似乎都很正常,除了当这段代码打开文件夹中的每个文件(在Do-till循环中)时,它会自动打开一半 我希望能够避免这种情况,而不直接引用主数据表的名称,以防有人重命名它 是否有一个简单的命令,如果它试图打开自己,将跳过循环中的剩余代码 代码如下: Sub CombineWSs() Di
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
将
If
块放入循环中
Do Until strFilename = ""
If strFilename <> wbDest.Name Then 'since you already set wbDest = ThisWorkbook
'... rest of code
End If
Loop
Do直到strFilename=“”
如果strFilename wbDest.Name,那么“因为您已经设置了wbDest=ThisWorkbook
'... 代码的其余部分
如果结束
环
如果直接引用名称,您知道怎么做吗?您不需要知道工作簿的名称。如果strFilename=activeworkbook.name,我会添加一些类似If-strFilename=activeworkbook.name然后
的内容,然后继续你的Do-While
循环,并将End-If
放在循环之后。你能将While
和混合到循环中吗?他能做一些像“代码”这样的事情直到strFilename=“”,而strFilename这个工作簿。Name
?这是不可能的,@BruceWayne