循环浏览目录,打开工作簿,打印选定的工作表

我有大约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作为脚手架,我得到的文件和他们的工作表,但没有打印。

我看到两个问题

  1. 你在哪里打开工作簿?
  2. 您需要在Loop之前移动StrFile = Dir 。 用这个命令你要告诉它find下一个文件。

试试这个( 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 

如果你想打印你的问题中提到的前两张,然后执行此操作。 这不会检查工作表的名称

 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