我不擅长VBA(我典型的用例是录制宏,清理和修改VBA而不是从头开始创建任何东西)。我试图在使用Kutools整合它们之前,减少约300本excel工作簿。用VBA解析多个Excel工作簿
我想出了一点vba来剥离这些工作簿的一些不必要的部分,以使我的整合。
Sub PrepWorkbook()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
If Sh.Visible = True Then
Sh.Activate
Sh.Cells.Copy
Sh.Range("A1").PasteSpecial Paste:=xlValues
Sh.Range("A1").Select
End If
Next Sh
Application.CutCopyMode = False
Dim ws As Worksheet
For Each ws In Worksheets
ws.Cells.Validation.Delete
Next ws
Application.DisplayAlerts=FALSE
Sheets("Instructions").Delete
Sheets("Dropdowns").Delete
Sheets("Dropdowns2").Delete
Sheets("Range Reference").Delete
Sheets("All Fields").Delete
Sheets("ExistingData").Delete
Application.DisplayAlerts=TRUE
End Sub
我发现的代码极好位上的计算器跨多个工作簿,我试图适应我的目的,行驶了预定任务:
当任何单独的工作簿上运行此代码的工作没有问题Sub ProcessFiles()
Dim Filename, Pathname As String
Dim wb As Workbook
Pathname = ActiveWorkbook.Path & "\Files\"
Filename = Dir(Pathname & "*.xls")
Do While Filename <> ""
Set wb = Workbooks.Open(Pathname & Filename)
DoWork wb
wb.Close SaveChanges:=True
Filename = Dir()
Loop
End Sub
Sub DoWork(wb As Workbook)
With wb
'Do your work here
.Worksheets(1).Range("A1").Value = "Hello World!"
End With
End Sub
原来的线程可以在这里找到: Run same excel macro on multiple excel files
我试着将我的代码放到了““在这里做你的工作”和”.Worksheets(1).Range(‘A1’)的价值。 =“Hello World!”“行原来的vba,但没有成功。我也试过类似地将我的解析代码插入到几个其他解决方案中,以跨多个excel工作簿执行宏,但没有成功。
它调用的工作簿正在打开和保存,但我的代码正在尝试完成的实际工作没有发生(没有记录错误)。我怀疑我插入的一段代码是不兼容的,这对于比我更有知识的人来说是非常明显的。
任何人都可以提供一些帮助/指导吗?我真的只需要代码或指导如何在“C:\ Temp \ Workbooks”中找到的300个工作簿上执行原始“PrepWorkbook”VBA
这做到了!非常感谢。我昨晚在这个晚上呆了好几个小时,而这正阻止我前进一件非常重要的事情。 – TechBA
真棒,感谢@TechBA的认可。它给我带来了超过50分,所以现在我可以在这个网站上评论一个疯狂的人!保持VBA学习之后,确保使用F8键逐步完成...并且您将到达那里! – PGCodeRider