自动运行一个Excelmacros来格式化行

我每天都有由外部程序创build的excel报告。 我正在寻找这些报告自动化简单的行格式。 它们总是具有相同数量的列,但是具有不同的行数。

这是我已经到位的macros:(它运行在一个单一的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 

这是从batch file运行的.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 

这在单个文件上效果很好,但是,为了使这个工作,我必须在我的“所有打开的工作簿”中创build我的macros,并且必须保存我的Excel作为一个xlsm文件。

如果我将这些报告每天都作为xlsx文件重写,那就不太理想了。

我如何创build一个macros在我的个人工作簿,所以我不必将报告保存为xlsm,所以我可以在其他xlsx报告上应用相同的macros?

我知道我甚至应该能够创build一个.vbs文件,通过我的Windows文件夹循环,并应用所有现有的Excel文件的macros。

会喜欢你的意见。 谢谢!!

编辑:

循环代码(来自评论):

 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