我要打印一个文件夹下的所有excel文件(用VBA)比如(C:\A\B.*.xlsx)的文件?

比如打印C:\资料\临时数据
把临时数据文件夹里的所有excel打印出来,只打印sheet1工作表,打印区域range("A1:S35")。

1、参考

怎样批量提取文件夹下文件名

2、使用下面代码(打印当前表)

Sub 打印()

'2019-12-25 22:00:47

Dim m1$, m2$, m$

m1 = "C:\A"

m2 = "B.*.xlsx"

m = Dir(m1 & "\", vbReadOnly)

While m <> ""

 If m Like m2 Then

    Workbooks.Open m1 & "\" & m

    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

    ActiveWorkbook.Close SaveChanges:=False

 End If

 m = Dir

Wend

End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-26
Sub 打印()

Dim Wb As Workbook '定义一个wb工作簿变量
On Error Resume Next '容错
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
'多选
.Filters.Clear
'清除文件过滤器
.Filters.Add "Excel Files", "*.txt"
.Filters.Add "All Files", "*.*"
'设置两个文件过滤器
Dim showOkCancel As Integer
showOkCancel = .Show
If showOkCancel = -1 Then
For i = 1 To .SelectedItems.Count
Set Wb = Workbooks.Open(.SelectedItems(i))
Wb.Sheets(1).PageSetup.PrintArea = Wb.Sheets(1).Range("A1:S35")
Wb.Sheets(1).PrintOut copies:=1
Wb.Close
Next
Set Wb = Nothing
End If
End With

End Sub追问

怎么把xlsx和xls excel文件都能选择,而不是单独选择 我把txt格式换成了xlsx格式,因为我打印的是Excel文件。
我发现还有xls格式的文件,不知道怎么同时选择。
因为文件要按顺序打印,所以必须都能选择。有时间帮忙看下哦

本回答被提问者采纳
第2个回答  2019-12-25
有个简单的例子,这段代码是打印你选择的路径下的所有XLSX,sheet名为“报表”,你也可以根据你自己的需求改改
Sub 批量打印()
Dim myfiles
Dim i As Long, path
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "请选择要查找的文件夹"
If .Show Then
path = .SelectedItems(1)
End If
End With
myfiles = Dir(path & "\*.xlsx")
On Error Resume Next
Application.ScreenUpdating = True
Application.DisplayAlerts = False
Do While Right(myfiles, 5) = ".xlsx"
i = i + 1
Workbooks.Open Filename:=path & "\" & myfiles
Sheets("报表").Select

ActiveWindow.View = xlPageBreakPreview
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
ActiveWindow.Close

myfiles = Dir

Loop
End Sub
第3个回答  2019-12-26
这个一般需要定制的,可以找人去定做。因为代码量比较大。
第4个回答  2019-12-25
可以写代码来实现追问

我不会写,才问的啊,有没有大神写一个。

相似回答