我有一个不断发展,成长和成长的项目。我是最后一点,它不循环。我不明白为什么。我有他们自己的宏中的元素,他们完美,直到我尝试将它们组合成一个运行它们的超级宏。我们的想法是“主”工作簿(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
答案 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