我每天都有excel报告,这些报告是由外部程序创建的。我希望在这些报告上自动化一个简单的行格式。它们总是具有相同数量的列,但行数不同。
这是我已经使用的宏:(它在单个xlsm文件上运行时按预期完成,这不太理想)
Sub FormatLeadLists()
Application.DisplayAlerts = False
Columns("A:F").Select
Selection.ColumnWidth = 8.29
Columns("A:F").EntireColumn.AutoFit
Range("A1").Select
Selection.CurrentRegion.Select
ActiveSheet.ListObjects.Add(xlSrcRange, Selection, , xlYes).Name = "Table1"
Range("Table1[#All]").Select
End Sub
这是我从批处理文件运行的.vbs代码:
Dim args, objExcel
Set args = WScript.Arguments
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Open args(0)
objExcel.Visible = True
objExcel.Run "FormatLeadLists"
objExcel.ActiveWorkbook.Save
objExcel.ActiveWorkbook.Close(0)
objExcel.Quit
这适用于单个文件,但是,为了完成这项工作,我必须在“所有打开的工作簿”中创建我的宏,并且必须将我的Excel保存为xlsm文件。
如果我每天都将这些报告覆盖为xlsx文件,那就不理想了。
如何在个人工作簿中创建宏,这样我就不必将报告保存为xlsm,因此我可以在其他xlsx报告中应用相同的宏?
我知道我甚至可以创建一个循环通过我的Windows文件夹的.vbs文件,并在所有现有的excel文件上应用宏。
编辑:
循环代码(来自评论):
Dim strFileName As String
Dim strFolder As String: strFolder = "C:\myfiles\"
Dim strFileSpec As String: strFileSpec = strFolder & "*.*"
strFileName = Dir(strFileSpec)
Do While Len(strFileName) > 0
Debug.FormatLeadLists strFileName
strFileName = Dir
Loop