遍历目录,打开工作簿,打印选定的工作表

Loop through directory, open workbook, print selected worksheets

我有大约 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. 您需要将 StrFile = Dir 移动到 Loop 之前。使用此命令,您可以告诉它查找下一个文件。

试试这个(未测试

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