打印文件夹 VBA 代码中的所有文件无效

Print all files in folder VBA code not working

我正在尝试使用此代码打印文件夹中的所有文件,但有些地方无法正常工作...

Sub Bulk_Print_From_Folder()

Dim k       As Variant
Dim n       As Variant
Dim oFile   As Object
Dim oFiles  As Object
Dim oFolder As Object
Dim Path    As Variant
Dim vItem   As Object

    Path = "C:\Testing Folder"

    With CreateObject("Shell.Application")
        Set oFolder = .Namespace(Path)
        If oFolder Is Nothing Then
            MsgBox "The Folder :" & vbLf & """" & Path & """ was Not Found.", vbCritical
            Exit Sub
        End If
    End With

    Set oFiles = oFolder.Items
        oFiles.Filter 64, "*.pdf;*.jpg;*.png;*.txt"

        For n = 0 To oFiles.Count - 1
            Set oFile = oFiles.Item(n)
            For k = 0 To oFile.Verbs.Count - 1
                Set vItem = oFile.Verbs.Item(k)
                If Not vItem Is Nothing Then
                    If Replace(vItem, "&", "") = "Print" Then vItem.DoIt
                End If
            Next k
        Next n

     End Sub

额外信息:

»» 我启用了宏并定义了默认打印机...打印机工作正常。

»» 我注意到在点击按钮执行此代码后,我在任务栏中看不到打印机图标。如果重要的话,我正在使用 Office 2007 Ultimate。

»» 我知道它找到了文件夹。我通过更改代码上的文件夹名称进行测试,并收到消息

MsgBox "The Folder :" & vbLf & """" & Path & """ was Not Found.", vbCritical

这是我的项目参考:

我是不是漏掉了什么?

代码没有问题。

问题出在打开图像文件的默认程序设置上。如果右键单击图像文件,则不会看到 Print 选项。要解决此问题,请打开 Control panel 并转到 Default Apps。将 Photo Viewer 的默认应用更改为 Paint。关闭 Default Apps

现在右击图片文件,你会看到Print选项。如果您确实看到 Print,那么您的代码现在将 运行 因为 vItem 将具有 &Print

如果您在该文件夹中混合了多个文件,并且没有看到任何特定扩展名的 Print 选项,那么请按照我上面的建议进行操作。更改默认应用程序,直到您在上下文菜单中看到 Print

根据 OS,您可能会看到 &Print&Print out 或其他地方语言。您可以使用此代码进行测试

For n = 0 To oFiles.Count - 1
    Set oFile = oFiles.Item(n)
    For k = 0 To oFile.Verbs.Count - 1
        Set vItem = oFile.Verbs.Item(k)
        If Not vItem Is Nothing Then
            Debug.Print vItem
        End If
    Next k
Next n

因此您可能需要更改代码

If Replace(vItem, "&", "") = "Print" Then

If InStr(1, vItem, "&Print") Then 

或到

InStr(1, vItem, "imprimir", vbTextCompare) '<~~ See Chat below quesiton