Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]导出至Word为页眉加上特定字符,代码怎么写?

殷小宝  发表于:2012-10-13 20:00:57  
复制

代码如下:

 Dim strTemplate As String
    Dim strFileName As String
    Dim objApp As Object    'New Word.Application
    Dim objDoc As Object    'Word.Document
    Dim objField As Object    'Word.Field
    Dim rst As Object
    Dim blnNoQuit As Boolean

    strTemplate = CurrentProject.Path & "\模板\入院录模板.doc"

 Set objApp = CreateObject("Word.Application")    '创建word对象
    Set objDoc = objApp.Documents.Open(strTemplate)  '打开word模块文档
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM 表1 WHERE 病员号='" & 病员号 & "'", , 4)  

    If Not rst.EOF Then
        strFileName = CurrentProject.Path & "\存放位置\" & rst!姓名 & "入院录" & ".doc"

        If Dir(strFileName) <> "" Then Kill strFileName  '如果文件已存在,先删除已有文件
        objDoc.FormFields("姓名").result = rst!姓名
        objDoc.FormFields("性别").result = rst!性别
        objDoc.FormFields("年龄").result = rst!年龄
        objDoc.FormFields("病区").result = rst!病区
        objDoc.FormFields("床号").result = rst!床号
        objDoc.FormFields("婚否").result = rst!婚否

         .......

   End If

 rst.Close
    objDoc.SaveAs strFileName

    Dim MyText As String
    MyText = Me.姓名
    Set objDoc = objApp.Documents.Open(strFileName)

    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    Selection.HeaderFooter.Range.Text = MyText
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument

不知道这段代码错在哪里,不能为导出的wOrd文档添加页眉,望老师们予以指导,在此感谢了.

 

Top
殷小宝 发表于:2012-10-13 20:17:11
  Dim MyText As String
    MyText = Me.姓名
    Set objDoc = objApp.Documents.Open(strFileName)

    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    Selection.HeaderFooter.Range.Text = MyText
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument

关键是上面几句,SeekView这个不知是何意!



殷小宝 发表于:2012-10-13 20:23:20
**部分显示为空值。 
 


殷小宝 发表于:2012-10-13 20:23:22
**部分显示为空值。 
 


煮江品茶 发表于:2012-10-14 07:14:25
所有word子对象前,都加objApp试试。

殷小宝 发表于:2012-10-14 21:24:15

煮江品茶老师,加了objApp试了,不行。



沈军 发表于:2012-10-14 22:23:04
你可以在WORD模板文件里面先建好页眉并添加相关的域,再在导出的子语句中增加导出程序语句,可否?

殷小宝 发表于:2012-10-14 23:07:22

页眉中添加窗体域,不能像上面的操作。要另辟蹊径。这里提供一个替换方法的代码:

Set doc = objApp.Documents.Open(strFileName)
        Set win = doc.ActiveWindow
        win.View.SeekView = wdSeekPrimaryHeader
        With win.Selection.Find
            .Text = "[姓名]"
            .Replacement.Text = Me.姓名
            .Execute , , , , , , , , , , 2
            .Text = "[床号]"
            .Replacement.Text = Me.床号
            .Execute , , , , , , , , , , 2
        End With
        win.View.SeekView = wdSeekMainDocument
    End If

这个试了能行。



cspa 发表于:2012-11-05 13:02:07

             建议用以下代码,我用过的,没问题:             

                       With objDoc.Documents("WORD文件名.doc")
                            .ActiveWindow.View.SeekView = wdSeekCurrentPageHeader                                 '此句是设置页眉成编辑状态
                            .ActiveWindow.Selection.Text = "MyText"                                                           '此句是向页眉插入相关文本
                            .ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument                       '此句是设置页眉成常规显示状态
                       ......

                       End With



殷小宝 发表于:2012-11-06 21:47:00
cspa用的方法作用有限,不能自定义页眉的格式,它的页眉只是“MyText”,什么格式,什么位置呢?

cspa 发表于:2012-11-07 08:34:03

关于页眉格式要看你的需求了。方法有2个:

1、我看你给出的例子是word模版形式,那么你就可以先在模版中把页眉格式设置好,出来的表格自然就是你设置的格式;

2、也可在VBA中实现,例如:

With objDoc.Documents("WORD文件名.doc")
                            .ActiveWindow.View.SeekView = wdSeekCurrentPageHeader                                 '此句是设置页眉成编辑状态
                            .ActiveWindow.Selection.Font.Name = "黑体"
                            .ActiveWindow.Selection.Font.Size = 10
                           .ActiveWindow.Selection.Font.Color = wdColorRed
                           .ActiveWindow.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter        '标红字句都是关于格式的,你可根据需要任意设置                   

                            .ActiveWindow.Selection.Text = "MyText"                                                           '此句是向页眉插入相关文本
                            .ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument                       '此句是设置页眉成常规显示状态
                       ......

                       End With

3、关于页眉文本内容你也可设为你需要的文本变量。

总之,只要符合VBA语法就行。

 

 



殷小宝 发表于:2012-11-07 22:36:55

谢谢上面的作者热情的回复,但楼上不能设置几个变量,因为页眉中有几个变量,如我上面的例子,有姓名、床号、住院号等,在这种情况下,用楼上的办法较难实现。但还是将其设为最佳答案。    



殷小宝 发表于:2012-11-07 22:40:06

说错了,楼上是说了两种方法。

 

 



总记录:12篇  页次:1/1 9 1 :