打印文件夹 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
我正在尝试使用此代码打印文件夹中的所有文件,但有些地方无法正常工作...
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