我有大约50个有3个工作表的工作簿,我需要打印第2个工作表。工作表的名称将是不变的,所以这不应该太难。
我在VBA中写了以下内容并没有出错,但我的打印机没有打印任何内容。我错过了什么?
Sub Loop2()
Dim StrFile As String
Dim WSCount As Integer
Dim sh As Worksheet
StrFile = Dir("c:\temp\*.xls*")
Do While Len(StrFile) > 0
Debug.Print StrFile
StrFile = Dir
For Each sh In ActiveWorkbook.Worksheets
If (sh.Name <> "Credits") Then
sh.PrintOut
End If
Next sh
Loop
End Sub
如果我使用MsgBox
作为脚手架,我会获取文件及其工作表,但不会打印。
答案 0 :(得分:1)
我看到两个问题
StrFile = Dir
之前移动Loop
。使用此命令,您可以告诉它查找下一个文件。试试这个( UNTESTED )
Sub Loop2()
Dim StrFile As String
Dim WSCount As Integer
Dim sh As Worksheet
Dim wb As Workbook
StrFile = Dir("c:\temp\*.xls*")
Do While Len(StrFile) > 0
Set wb = Workbooks.Open("c:\temp\" & StrFile)
For Each sh In wb.Worksheets
If (sh.Name <> "Credits") Then
sh.PrintOut
DoEvents
End If
Next sh
wb.Close (False)
StrFile = Dir
Loop
End Sub
如果您想要打印问题中提到的前2张,请执行此操作。这不会检查工作表的名称
Sub Loop2()
Dim StrFile As String
Dim WSCount As Integer
Dim wb As Workbook
StrFile = Dir("c:\temp\*.xls*")
Do While Len(StrFile) > 0
Set wb = Workbooks.Open("c:\temp\" & StrFile)
wb.Sheets(1).PrintOut
DoEvents
wb.Sheets(2).PrintOut
wb.Close (False)
StrFile = Dir
Loop
End Sub