Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: yjwdjfqb

[已解决]VBA,根据EXCEL花名册,生成word文档的年度考核表

[复制链接]
发表于 2014-1-6 13:24 | 显示全部楼层
yjwdjfqb 发表于 2014-1-6 13:15
老师这儿,再帮我修改下好吧

关于回车符,你改下模板.doc中那个单元格的对齐方式。

工作单元中的空格
找到 .bookmarks("工作单位").Range.Text = arr(i, 3) & arr(i, 12)
改为 .bookmarks("工作单位").Range.Text = arr(i, 3) & " " & arr(i, 12)


回复

使用道具 举报

发表于 2014-1-6 13:31 | 显示全部楼层
yjwdjfqb 发表于 2014-1-6 13:22
老师,

单位和职务,之间用 空格 隔开,我知道改了

你打开模板.doc,定位到出生年月右边的单元格,右键,单元格右键对齐方式
QQ截图20140106133427.jpg

回复

使用道具 举报

发表于 2014-1-6 13:31 | 显示全部楼层
保存后再重新运行代码生成WORD文件。
回复

使用道具 举报

发表于 2014-1-6 13:33 | 显示全部楼层
重新生成前,记得关闭打开的WORD文档。
回复

使用道具 举报

 楼主| 发表于 2014-1-6 13:44 | 显示全部楼层
hwc2ycy 发表于 2014-1-6 13:33
重新生成前,记得关闭打开的WORD文档。

老师你好!

Option Explicit
Sub ToWord()
    Dim arr, i As Integer
    arr = Range("a1").CurrentRegion.Value
    Dim strPath$
    strPath = ThisWorkbook.Path & Application.PathSeparator
    Dim objWord As Object
    Set objWord = CreateObject("word.application")
    With objWord
        For i = 2 To UBound(arr)
            With .documents.Add(Template:=strPath & "模板.doc")
                Application.StatusBar = "正在处理 " & arr(i, 2)
                .bookmarks("姓名").Range.Text = arr(i, 2)
                .bookmarks("性别").Range.Text = arr(i, 8)
                .bookmarks("出生年月").Range.Text = arr(i, 9)
                .bookmarks("参加工作时间").Range.Text = arr(i, 11)
                .bookmarks("政治面貌").Range.Text = arr(i, 6)
                .bookmarks("文化程度").Range.Text = arr(i, 18)
                .bookmarks("技术等级").Range.Text = arr(i, 15)
                .bookmarks("起聘时间").Range.Text = arr(i, 16)
                .bookmarks("本人述职").Range.Text = arr(i, 19)
                .bookmarks("工作单位").Range.Text = arr(i, 3) & " " & arr(i, 12)
                .bookmarks("分管工作").Range.Text = arr(i, 20)
                .bookmarks("年度").Range.Text = arr(i, 21)
                  
                .bookmarks("年龄").Range.Text = arr(i, 10)
                .bookmarks("专业技术类别").Range.Text = arr(i, 14)

               
                .SaveAs strPath & arr(i, 2) & ".doc", FileFormat:=0
                .Close True
            End With
        Next
        .Quit
    End With
    Application.StatusBar = ""
    MsgBox "整理完成"
End Sub

红色部分是我加上的,怎么不行呀,提示,没有打到对象


回复

使用道具 举报

发表于 2014-1-6 13:44 | 显示全部楼层
用了一个比较简单的方法,不用VBA代码,就用WORD的功能,邮件合并,点击几个鼠标,即可完成 001.gif

点评

这个方法不错。  发表于 2014-1-6 13:49

评分

参与人数 1 +9 收起 理由
yjwdjfqb + 9 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-1-6 13:49 | 显示全部楼层
yjwdjfqb 发表于 2014-1-6 13:44
老师你好!

Option Explicit

模板里的书签都是我自己加的,你原来的模板里没有,肯定要报错。


回复

使用道具 举报

发表于 2014-1-6 13:50 | 显示全部楼层
你直接学好用邮件合并吧,不会代码的话就学技巧。
回复

使用道具 举报

发表于 2014-1-6 14:03 | 显示全部楼层
忘了,你的是03版了
002.gif
回复

使用道具 举报

发表于 2014-1-6 14:10 | 显示全部楼层
yjwdjfqb 发表于 2014-1-6 13:22
老师,

单位和职务,之间用 空格 隔开,我知道改了

偶不是说了嘛,是单元格的对齐方式造成的,你改成水平垂直全居中,就OK了。不是还截了图怎么改嘛。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 11:20 , Processed in 0.400055 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表