首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

用VB给word页脚增添页码与内容 急

2012-12-20 
用VB给word页脚添加页码与内容 急急急急急急用VB给word页脚添加页码与内容如word页脚显示 “ 第1页共2页实

用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


[其他解释]
我也想知道。
[其他解释]
记录一下“宏”就知道了。

[其他解释]
引用:
记录一下“宏”就知道了。

+1
[其他解释]
不会啊 呵呵 有谁能给点代码直接实现啊
[其他解释]
http://download.csdn.net/detail/veron_04/1627134


[其他解释]
该回复于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

[其他解释]
C-Cyd2008 大侠 您好  页眉的横线的消失成功了 可能我表述有问题 我是想关掉word页眉 因为隐藏页眉横线后 页眉还占着位置 我2页的东西就会变成三页 大侠能告诉我关闭页眉的代码吗 我用宏成功了 但不知道怎么写VB代码 
[其他解释]
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    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
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
关闭页眉的宏

热点排行