作者: littleboy 2024-04-02 15:49:01

VBA-office程序例子

Word批量转pdf

新建文本文件txt,写入如下内容并保存成后缀为(.vbs格式)文件。当然你也可以直接点击zip下载链接直接下载vbs文件。

使用时,将word文件拖动到“.vbs文件”即可,等待转换程序完成。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'Convert .doc or .docx to .pdf files via Send To menu
Set fso = CreateObject("Scripting.FileSystemObject")
For i= 0 To WScript.Arguments.Count -1
docPath = WScript.Arguments(i)
docPath = fso.GetAbsolutePathName(docPath)
If LCase(Right(docPath, 4)) = ".doc" Or LCase(Right(docPath, 5)) = ".docx" Then
Set objWord = CreateObject("Word.Application")
pdfPath = fso.GetParentFolderName(docPath) & "\" & _
fso.GetBaseName(docpath) & ".pdf"
objWord.Visible = False
Set objDoc = objWord.documents.open(docPath)
objDoc.saveas pdfPath, 17
objDoc.Close
objWord.Quit
End If
Next

虚拟打印机+VBA批量打印

这个方法的原理就是,通过虚拟机将word打印成pdf格式,再用vba这个工具将这个过程批量化

VBA的代码,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub 批量打印WORD文档()
Dim fileToOpen, GetOpenFilename, App, iFile
fileToOpen = Application.GetOpenFilename(filefilter:="Word文档(*.do*),*.do*", FilterIndex:=4, Title:="请选择要处理的文档(可多选)", MultiSelect:=True)
If Not IsArray(fileToOpen) Then
MsgBox "你没有选择文件", vbOKOnly, "提示": Exit Sub
Else
Set App = CreateObject("Word.Application")
For Each iFile In fileToOpen
Set WrdDoc = App.Documents.Open(iFile)
App.Documents(WrdDoc).PrintOut
App.Documents(WrdDoc).Close False
T = T + 1
Next
End If
MsgBox "操作完成!!" & vbCrLf & "打印了 " & T & " 个文件。", vbOKOnly, "提示"
End Sub