自动运行excel宏以格式化行

时间:2017-09-01 21:46:47

标签: excel vba excel-vba

我每天都有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

0 个答案:

没有答案