下标超出VBA打印范围

下标超出VBA打印范围,vba,range,out,subscript,Vba,Range,Out,Subscript,我有一个脚本,它可以打印“下载”文件夹中的所有内容,VBA脚本在我添加了一点代码以“使列与宽度匹配”之前确实有效,这样我可以在打印之前看到所有数据,现在它显示“下标超出范围”,一旦它打开“下载”文件夹中的第一个文件,我想这是因为从未调用“Sheet1”“Sheet1”取而代之的是实际文件名的前15个字符 有人能提供帮助吗 我刚才补充的一点是: 工作表(“Sheet1”).列(“A:H”).自动调整 我的完整代码: Dim wb As Workbook, ws As Worksheet Dim F

我有一个脚本,它可以打印“下载”文件夹中的所有内容,VBA脚本在我添加了一点代码以“使列与宽度匹配”之前确实有效,这样我可以在打印之前看到所有数据,现在它显示“下标超出范围”,一旦它打开“下载”文件夹中的第一个文件,我想这是因为从未调用“Sheet1”“Sheet1”取而代之的是实际文件名的前15个字符

有人能提供帮助吗

我刚才补充的一点是:
工作表(“Sheet1”).列(“A:H”).自动调整

我的完整代码:

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