Word使用VBA实现拆分文档页数
- 新建一个记事本,添加以下代码
Sub 利用VBA实现Word文档的拆分()
On Error Resume Next
Dim doc1 As Document, newdoc As Document, a, page1%, page2%, i1%, i2%, i3%, dk As FileDialog, b$
Dim doc2 As Document
Dim zb, yb, sb, xb
a = InputBox("请输入分割页数(默认每隔1页分割一次)", , 1)
If a <> "" Then
d = MsgBox("请选择拆分文档的保存路径", 1 + 64)
If d = 1 Then
Set dk = Application.FileDialog(msoFileDialogFolderPicker)
If dk.Show = -1 Then
Set doc1 = ActiveDocument
page1 = doc1.Content.Information(wdNumberOfPagesInDocument)
doc1.Content.Select
Selection.Collapse 1
For i1 = 1 To page1 Step a
If i1 + a > page1 Then
i2 = page1
If a = 1 Then
b = "_" & "第" & i2 & "页"
Else
If page1 Mod a = 1 Then
b = "_" & "第" & i2 & "页"
Else
If i1 + a - 1 = page1 Then
b = "_" & "第" & i1 & "-" & i2 & "页"
Else
b = "_" & "第" & (page1 - page1 Mod a) + 1 & "-" & page1 & "页"
End If
End If
End If
Else
i2 = i1 + a - 1
If a = 1 Then
b = "_" & "第" & i1 & "页"
Else
b = "_" & "第" & i1 & "-" & i2 & "页"
End If
End If
Set newdoc = Documents.Add
For i3 = i1 To i2
doc1.Activate
doc1.Bookmarks("\page").Range.Copy
With Selection.PageSetup
zb = .LeftMargin
yb = .RightMargin
sb = .TopMargin
xb = .BottomMargin
End With
Application.Browser.Target = wdBrowsePage
Application.Browser.Next
newdoc.Activate
Selection.Paste
With Selection.PageSetup
.LeftMargin = zb
.RightMargin = yb
.TopMargin = sb
.BottomMargin = xb
End With
Next
newdoc.SaveAs2 (dk.SelectedItems(1) & "\" & Split(doc1.Name, ".doc")(0) & b & ".docx")
newdoc.Close -1
Next
MsgBox "拆分完成" & Chr(13) _
& Chr(13) _
& "已保存至" & dk.SelectedItems(1), 0 + 64
End If
End If
End If
End Sub
2、保存为 .bas 格式
3、我打开一个word文档,里面分别有47张大学生体测表格,现在想要单独拆分每一个出来做独立的文档。
实现步骤:
1、点击开发工具,并选择Visual Basic【如果没有开发工具这一选项的,请在 文件 — 选项 — 自定义功能区那里勾选 开发工具】
2、选择Mormal 鼠标右键然后导入刚刚保存的那个 bas 代码文件,然后在模块那里就可以看到导入的代码
3、最后点击运行(快捷键:F5)
- 选择分割页数,默认1页分割一次
- 然后选择需要保存的路径
- 最后成功将每一页拆分出来: