嵌套宏未循环

时间:2017-03-16 17:04:42

标签: excel vba excel-vba

我有一个不断发展,成长和成长的项目。我是最后一点,它不循环。我不明白为什么。我有他们自己的宏中的元素,他们完美,直到我尝试将它们组合成一个运行它们的超级宏。我们的想法是“主”工作簿(XLSM)将运行自己的更新,然后打开同一文件夹中的所有其他XLSM文件并运行将其数据推送到其他XLSX文件的THEIR更新。现在,每个XLSM文件都运行一个完美运行的宏     Sub EndofDay()     致电第1步     致电第2步     结束子 我使用与SuperMacro相同的“Do while”结构打开其他书籍并称其为“EndofDay”。它通过几个XLSM文件然后在MyFiles = Dir上停止并出现错误。以下语法应该运行主服务器更新和另一个代码字符串,然后打开文件夹中的所有其他XLSM文件。当它在这个级别下工作时,为什么突然不能在这个级别上工作。

Sub SuperMacroEOD_Trans()

    Dim MyFiles As String
        Call EndofDayTransfer 'Do this Workbook Transfer first then:
'Step 2: Specify a target folder/directory.
    MyFiles = Dir("C:\Users\ME\Desktop\QA VBA Project\*.xlsm")

'Dont try to open this workbook and do anything.
    Do While MyFiles <> "" And MyFiles <> "C:\Users\ME\Desktop\QA VBA Project\Update_Master.xlsm"
'Step 3: Open Workbooks one by one
    Workbooks.Open "C:\Users\ME\Desktop\QA VBA Project\" & MyFiles

    Call EndofDayTransfer 'Call same macro you ran and run in the other workbooks (they contain it).

    ActiveWorkbook.Close SaveChanges:=True

'Step 4: Next File in the folder/Directory
      Loop
    MyFiles = Dir <------------Gets stuck here or editor turns it yellow.


End Sub

1 个答案:

答案 0 :(得分:1)

您的代码中存在一些逻辑错误。

1-此处您告知代码在到达主文件时停止,但您实际需要的是跳过主文件。您还要将简单文件名与完整路径名称进行比较

  

Do While MyFiles <> "" And MyFiles <> "C:\Users\ME\Desktop\QA VBA Project\Update_Master.xlsm"

2-这应放在循环中,即行<{1}}之前的

  

Loop

3-您正在使用非常危险的MyFiles = Dir <------------Gets stuck here or editor turns it yellow.。您应该使用显式引用。此外,由于所有工作簿都具有“EndofDayTransfer”过程,包括主WB,因此必须明确指定“范围”,以便运行相应的过程(请参阅下面的代码中的ActiveWorkbook

Application.Run