用VB给word页脚添加页码与内容 急急急急急急
用VB给word页脚添加页码与内容 如word页脚显示 “ 第1页共2页 实验报告”
Private Sub Command1_Click()
'VB中引用WORD对象
Dim wdApp As New Word.Application, wdDoc As Word.Document
Dim wdRange As Word.Range
Set wdDoc = wdApp.Documents.Add
With wdDoc
Set wdRange = .Sections(1).Footers(wdHeaderFooterPrimary).Range
wdApp.NormalTemplate.AutoTextEntries("第 X 页 共 Y 页").Insert Where:=wdRange, RichText:=True
wdRange.ParagraphFormat.Alignment = wdAlignParagraphRight '段落右对齐
End With
End Sub
自动加页码的代码找到了
Dim wa, mydoc As Object
Set wa = CreateObject("word.application")
wa.Visible = True
加内容的也有
Set mydoc = wa.Documents.Add '启动word,生成文档
With mydoc.Sections(1) .Footers(1).range.Text = "实验报告"
.Footers(1).range.paragraphs(1).Alignment = 2
End With
但如何将两种结合 页脚生成“ 第1页共2页 实验报告”
求大侠解答 万分感谢
[最优解释]
Dim wdApp As New Word.Application, wdDoc As Word.Document
Set wdDoc = wdApp.Documents.Open("你的文档.doc")
Dim r As Range
'给文档的第一节页脚添加页码
Set r = wdDoc.Sections(1).Footers(wdHeaderFooterPrimary).Range
With r
.InsertAfter "第"
.Font.Size = 20
.Collapse Direction:=wdCollapseEnd
'插入页码域
.Fields.Add Range:=r, Type:=wdFieldEmpty, Text:= _
"PAGE \* Arabic ", PreserveFormatting:=True
.Expand unit:=wdWord
.InsertAfter "页"
.InsertAfter " 实验报告"
.ParagraphFormat.Alignment = wdAlignParagraphRight
End With
wdDoc.Close savechanges:=True
wdApp.Quit
[其他解释]
该回复于2012-12-08 14:13:34被管理员删除
[其他解释]
我想插入的是自动图文集 第几页 共几页 后面再加字符串 我用宏试了 把宏代码复制到VB中 第一次成功了 但后后老提示说 没有打开的文档 命令无效
宏If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
ActivePane.View.Type = wdOutlineView Then
ActiveWindow.ActivePane.View.Type = wdPrintView
End If
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
If Selection.HeaderFooter.IsHeader = True Then
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
Else
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
End If
NormalTemplate.AutoTextEntries("第 X 页 共 Y 页").Insert Where:=Selection. _
Range, RichText:=True
Selection.TypeText Text:=" "
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
[其他解释]
你的代码中并没有打开文档的操作,第一次能成功是你手动先打开了一个word文档,不成功是你关了;自动图文集本质上还是通过插入域来得到页码的,是一回事,要得到“共Y页”,只需插入页数域即可
[其他解释]
lj2 = Text1.Text & "通知单" & "(" & zdsj & ")" & ".doc"
lj = App.Path & "\模板\WXH813A-1.13.doc"
lj1 = App.Path & "\定值" & lj2
FileCopy lj, lj1
Set word = wordapp.Documents.Open(lj1)
wordapp.Visible = True
If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
ActivePane.View.Type = wdOutlineView Then
ActiveWindow.ActivePane.View.Type = wdPrintView
End If
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
If Selection.HeaderFooter.IsHeader = True Then
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
Else
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
End If
NormalTemplate.AutoTextEntries("第 X 页 共 Y 页").Insert Where:=Selection. _
Range, RichText:=True
Selection.TypeText Text:=" "
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
有代码打开了word 但这段宏有时能运行成功 有时提示没有打开的文档 但实际我的文档早都打开了 所以很郁闷 不知道是什么问题 电脑重启了 就能成功 但过会 又不行了
[其他解释]
你代码中的引用是相对引用,ActiveWindow指的是活动的word文档的窗口,不一定是你代码中打开的文档的窗口,你必须作限定或把你的文档的窗口置为活动窗口:
对你的代码来说,把相对的改为绝对的,如ActiveWindow改为word.ActiveWindow,Selection改为word.Selection
把文档置为活动的:在你执行操作之前,先word.Activate,把你的文档置为活动的
[其他解释]
ActiveWindow改为word.ActiveWindow后显示对象不支持属性方法
是不是直接word.Activate,把文档值为活动 我运行时不开其他word文档就行了
------其他解决方案--------------------
word.Activate后 宏代码还是显示没有打开的文档 郁闷了
[其他解释]
用了7楼的代码 比宏要稳定 谢谢 顺便问下 加入页脚后 如何关闭页眉 总有条页眉的横线 用VB代码如何操作 用宏试了下还是不稳定 麻烦7楼大侠了
[其他解释]
不是不稳定,只是你对word文档模型还不熟悉,熟悉了自然就没问题了,这是对上面代码的改进,加入了页数域,去掉页眉横线:
Dim wdApp As New Word.Application, wdDoc As Word.Document
Set wdDoc = wdApp.Documents.Open("d:\你的文档.doc")
Dim r As Range
'给文档的第一节页脚添加页码
Set r = wdDoc.sections(1).Footers(wdHeaderFooterPrimary).Range
With r
.InsertAfter "第"
.Font.Size = 20
.Collapse Direction:=wdCollapseEnd
'插入页码域
.Fields.Add Range:=r, Type:=wdFieldEmpty, Text:= _
"PAGE \* Arabic ", PreserveFormatting:=True
.Expand unit:=wdWord
.InsertAfter "页 "
.InsertAfter "共"
.Collapse Direction:=wdCollapseEnd
'插入页数域
.Fields.Add Range:=r, Type:=wdFieldEmpty, Text:= _
"NUMPAGES \* Arabic ", PreserveFormatting:=True
.Expand unit:=wdWord
.InsertAfter "页"
.InsertAfter " 实验报告"
.ParagraphFormat.Alignment = wdAlignParagraphRight
End With
'隐藏页眉的横线
wdDoc.sections(1).Headers(wdHeaderFooterPrimary).Range.Borders(wdBorderBottom).Visible = False
wdDoc.Close savechanges:=True '关闭并保存
wdApp.Quit