Vba 循环函数跳过文件

Vba 循环函数跳过文件,vba,excel,Vba,Excel,我是这个网站的新手,需要一些帮助。我在excel中创建了一个宏,用于从文件夹中工作簿的某些单元格中提取值并合并这些信息。代码似乎正在运行,只是它只从文件夹中的大约一半工作簿中提取。有人知道它为什么这样做吗?我如何修复它 Sub LoopThroughDirectory() Dim MyFile As String Dim erow Dim Filepath As String Filepath = "T:\Sales Orders\2017\May\" MyFile = Di

我是这个网站的新手,需要一些帮助。我在excel中创建了一个宏,用于从文件夹中工作簿的某些单元格中提取值并合并这些信息。代码似乎正在运行,只是它只从文件夹中的大约一半工作簿中提取。有人知道它为什么这样做吗?我如何修复它

Sub LoopThroughDirectory()
  Dim MyFile As String
  Dim erow
  Dim Filepath As String
  Filepath = "T:\Sales Orders\2017\May\"
  MyFile = Dir("T:\Sales Orders\2017\May\")

  Do While Len(MyFile) > 0
    If MyFile = "maytt.xlsm" Then
      Exit Sub
    End If

    Workbooks.Open ("T:\Sales Orders\2017\May\" & MyFile)
    Range("F1:F7").Copy
    ActiveWorkbook.Close

    ecolumn = Sheet1.Cells(Columns.Count).End(xlToLeft).Offset(0, 1).Column


    ActiveSheet.Paste Destination:=Worksheets("Summary").Range(Cells(1, ecolumn), Cells(7, ecolumn))

    MyFile = Dir
  Loop

End Sub
看起来您想跳过文件
“maytt.xlsm”
,但实际操作是在到达该文件时停止整个操作(
,然后退出Sub
)。要跳过文件并继续,请对代码进行以下修改:

1-在
myFile=Dir
语句之前添加行标签:

NextFile: ' <---------Add this
        MyFile = Dir
    Loop

NextFile:'是否只从名称以字母“A”到“L”开头的文件中提取?您可能会考虑放置一个文件掩码,以便只处理工作簿(例如
MyFile=Dir(“T:\Sales Orders\2017\May\*.xl*)
)。Windows将放置系统文件,如
thumbs.db
,这将真正扰乱像您这样的循环。YowE3K-不,被跳过的文件似乎没有任何押韵或理由。Jeeped-谢谢提示!此文件夹中的所有文件都是excel工作簿。谢谢!我已经试过了,但现在宏只想无限期地在文件中运行。有什么想法吗?@L.Oldenburg您是否将标签
NextFile:
放在行
MyFile=Dir
之前?以下是我所做的:子循环通过directory()将MyFile设置为String Dim erow Dim Filepath设置为String Filepath=“T:\Sales Orders\2017\May\”NextFile:MyFile=Dir(“T:\Sales Orders\2017\May\”)执行,而Len(MyFile)>0如果MyFile=“maytt.xlsm”然后转到下一个文件End If工作簿。打开(“T:\Sales Orders\2017\May\”&MyFile)范围(“F1:F7”)。复制活动工作簿。关闭ecolumn=Sheet1。单元格(Columns.Count)。结束(xlToLeft)。偏移量(0,1)。列活动表。粘贴目标:=工作表(“摘要”)。范围(单元格(1,ecolumn),单元格(7,ecolumn))MyFile=Dir循环结束虽然我以前搞错了。代码仍然跳过了我文件夹中大约一半的文件,但现在它在结束时重新开始(拉相同的文件)。我在“MyFile=Dir”的正上方有一行“NextFile:”