以下是批量打印文件夹下的所有的WORD文件 ,谁能帮我修改为批量打印文件夹下的所有EXCEL文件 非常感谢!
filterstr=inputbox("请输入不要打印的文件,用逗号分隔。如2,1表示文件名包含2或者1的不打印,输入*表示打印所有:")
filtered=false
printme=true
if filterstr<>"*" and filterstr<>"" then
filtered=true
filterlist=split(filterstr,",")
end if
if filterstr<>"" then
Set WshShell = WScript.CreateObject("WScript.Shell")
printsub(WshShell.CurrentDirectory)
msgbox "完工啦!"
end if
Sub printsub(byval curdc)
Set FSO =CreateObject("Scripting.FileSystemObject")
Set WD = CreateObject("Word.Application")
wd.visible=false
Set FD = FSO.GetFolder(curdc)
Set FN = FD.Files
For Each F1 In FN
if filtered then
printme=true
for each fl in filterlist
if Instr(LCase(Left(F1.Name,len(F1.Name)-3)),fl)<>0 then
printme=false
end if
next
end if
If UCase(Right(F1.Name, 3)) = "DOC" and printme Then
set doc=WD.Documents.Open(FD.Path & "\" & F1.Name)
doc.PrintOut
doc.close
'WD.Documents.Close
set doc=nothing
End If
Next
wd.visible=true
WD.Quit
Set SubFD=FD.SubFolders
For Each folder in SubFD
printsub(folder.Path)
Next
Set SubFD=nothing
set fn=nothing
set fd=nothing
Set WD = Nothing
Set FSO = Nothing
End Sub
VBS批量打印word和EXCEL
答案:1 悬赏:0 手机版
解决时间 2021-02-12 22:07
- 提问者网友:我是女神我骄傲
- 2021-02-11 23:45
最佳答案
- 五星知识达人网友:雪起风沙痕
- 2021-02-12 00:09
filterstr=inputbox("请输入不要打印的文件,用逗号分隔。如2,1表示文件名包含2或者1的不打印,输入*表示打印所有:")
filtered=false
printme=true
if filterstr<>"*" and filterstr<>"" then
filtered=true
filterlist=split(filterstr,",")
end if
if filterstr<>"" then
Set WshShell = WScript.CreateObject("WScript.Shell")
printsub(WshShell.CurrentDirectory)
msgbox "完工啦!"
end if
Sub printsub(byval curdc)
Set FSO =CreateObject("Scripting.FileSystemObject")
Set WD = CreateObject("Excel.Application")
wd.visible=false
Set FD = FSO.GetFolder(curdc)
Set FN = FD.Files
For Each F1 In FN
if filtered then
printme=true
for each fl in filterlist
if Instr(LCase(Left(F1.Name,len(F1.Name)-3)),fl)<>0 then
printme=false
end if
next
end if
If UCase(Right(F1.Name, 3)) = "XLS" and printme Then
Set myWork = GetObject(FD.Path & "\" & F1.Name)
Set mySheet = GetObject(FD.Path & "\" & F1.Name).Worksheets(1)
mySheet.PrintOut
myWork.Close saveChanges=False
End If
Next
wd.visible=true
WD.Quit
Set SubFD=FD.SubFolders
For Each folder in SubFD
printsub(folder.Path)
Next
Set SubFD=nothing
set fn=nothing
set fd=nothing
Set WD = Nothing
Set FSO = Nothing
End Sub
如果你是excel2007以上的,请把代码中的“XLS”改成“LSX”即可。
filtered=false
printme=true
if filterstr<>"*" and filterstr<>"" then
filtered=true
filterlist=split(filterstr,",")
end if
if filterstr<>"" then
Set WshShell = WScript.CreateObject("WScript.Shell")
printsub(WshShell.CurrentDirectory)
msgbox "完工啦!"
end if
Sub printsub(byval curdc)
Set FSO =CreateObject("Scripting.FileSystemObject")
Set WD = CreateObject("Excel.Application")
wd.visible=false
Set FD = FSO.GetFolder(curdc)
Set FN = FD.Files
For Each F1 In FN
if filtered then
printme=true
for each fl in filterlist
if Instr(LCase(Left(F1.Name,len(F1.Name)-3)),fl)<>0 then
printme=false
end if
next
end if
If UCase(Right(F1.Name, 3)) = "XLS" and printme Then
Set myWork = GetObject(FD.Path & "\" & F1.Name)
Set mySheet = GetObject(FD.Path & "\" & F1.Name).Worksheets(1)
mySheet.PrintOut
myWork.Close saveChanges=False
End If
Next
wd.visible=true
WD.Quit
Set SubFD=FD.SubFolders
For Each folder in SubFD
printsub(folder.Path)
Next
Set SubFD=nothing
set fn=nothing
set fd=nothing
Set WD = Nothing
Set FSO = Nothing
End Sub
如果你是excel2007以上的,请把代码中的“XLS”改成“LSX”即可。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯