问题描述
我有一个脚本可以打印“下载”文件夹中的所有内容,VBA脚本可以正常工作,直到我在“将列调整为宽度”中添加了一些代码,这样我才能在打印之前看到所有数据,现在在打开“下载”文件夹中的第一个文件时说“下标超出范围”,我认为这是因为“ Sheet1”从未被称为“ Sheet1”,而是被命名为实际文件名的前15个字符。 / p>
有人可以提供帮助吗?
我刚添加的位:
Worksheets("Sheet1").Columns("A:H").AutoFit
我的完整代码:
Dim wb As Workbook,ws As Worksheet
Dim FileName As String,Path As String
Set wb = ActiveWorkbook
Set ws = ActiveSheet
Path = "C:\Users\Jonathan.mackell\Downloads\*.csv"
FileName = Dir(Path,vbnormal)
Do Until FileName = ""
Application.displayAlerts = False
Workbooks.Open Left(Path,Len(Path) - 5) & FileName
Worksheets("Sheet1").Columns("A:H").AutoFit
Set wb = ActiveWorkbook
For Each ws In wb.Worksheets
ws.PrintOut
Next
wb.Close
FileName = Dir()
Loop
End Sub
任何帮助表示赞赏!
解决方法
在打开wb
变量而不是使用activeworkbook时设置它,并包括sh
变量而不是使用activesheet,然后将其放入循环中,因此您无需知道名称。
Sub Test
Dim wb As Workbook,ws As Worksheet
Dim FileName As String,Path As String
Path = "C:\Users\Jonathan.mackell\Downloads\*.csv"
FileName = Dir(Path,vbNormal)
Do Until FileName = ""
Application.DisplayAlerts = False
Set wb = Workbooks.Open(Left(Path,Len(Path) - 5) & FileName)
For Each ws In wb.Worksheets
ws.Columns("A:H").AutoFit
ws.PrintOut
Next
wb.Close
FileName = Dir()
Loop
End Sub