从EXCEL中自动产生WORD文件

昨天帮同事做了一道“作业”,具体应用的场景不能详细地透露,大体上就是如题。用的 Office 是 2010 版本,解决步骤是:
  1. EXCEL用几列存储规定的内容。比如B列存负责输出,把几个参数写入文本文件,放置到指定目录下。一个参数做成一个文本文件,
  2. EXCEL打开WORD模板文件(.DOCM)。
  3. 这个WORD模板文件,有AutoOpen宏,目的是一打开即运行。该巨集的作用是:从那些文本文件中一一取参数,放在指定的地方。然后另存为一个DOC文档。
  4. 因为在AutoOpen巨集中不能直接调用Quit方法,所以在宏执行完后,手动关闭WORD文档。
EXCEL文件 之 自定义宏的代码
Sub BuildParaAndRunWord()
Dim aFileName(4)
nRow = InputBox("请输入行号(用数字表示)", "日期、部门、拼音和入厂日期这四项要完整!")aFileName(1) = Range("B" & Trim(Str(nRow))).Value  'Name
aFileName(2) = Range("C" & Trim(Str(nRow))).Value 'Depart
aFileName(3) = Range("D" & Trim(Str(nRow))).Value 'PinYin
aFileName(4) = Range("E" & Trim(Str(nRow))).Value 'InFactory Date

'  把这四项分别存入1、2、3、4个文本文件
For I = 1 To 4
    cFullName = "C:\123\" & Trim(Str(I)) & ".txt"
    Open cFullName For Output As #1
    Print #1, aFileName(I)
    Close #1
Next

' 打开WORD,接下来的活儿由WORD模板文件自行完成
Dim appWD As Word.Application, doc As Object
Set appWD = CreateObject("Word.Application")
appWD.Visible = True
appWD.Documents.Open Filename:="C:\123\Module.docm"

End Sub

WORD模板文件 之 AutoOpen宏的代码:
Sub OpenOpen()
Dim aComment(4)
' 把参数从1、2、3、4文本文档中读取出来
For I = 1 To 4
    FilePath = "C:\123\" & Trim(Str(I)) & ".txt"
    Set FileObj = CreateObject("Scripting.FileSystemObject")
    Set TextObj = FileObj.OpenTextFile(FilePath)
    txtLine = Trim(TextObj.ReadLine)
    aComment(I) = txtLine
    'MsgBox txtLine
Next

 '跳到指定位置,更改不同内容
    Selection.MoveDown Unit:=wdLine, Count:=4
    Selection.MoveRight Unit:=wdCell
    Selection.TypeText Text:=aComment(1)
    Selection.MoveRight Unit:=wdCell
    Selection.MoveRight Unit:=wdCell
    Selection.TypeText Text:=aComment(2)
    Selection.MoveRight Unit:=wdCell
    Selection.MoveRight Unit:=wdCell
    Selection.MoveRight Unit:=wdCell
    Selection.MoveRight Unit:=wdCell
    Selection.TypeText Text:=aComment(3)
    Selection.MoveRight Unit:=wdCell
    Selection.MoveRight Unit:=wdCell
    Selection.TypeText Text:=Left(aComment(4), 4) & "/" & Mid(aComment(4), 5, 2) & "/" & Right(aComment(4), 2)
    
    ' 用替代法找到模板中的邮件地址,并更改为新收件者英文名字
    Selection.Find.ClearFormatting 
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "Sample"
        .Replacement.Text = aComment(3)
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    ' 另存为DOC文档
    ActiveDocument.SaveAs FileName:="C:\123\" & aComment(1) & ".doc"
    
End Sub

顺便说一句:
  如果在“控制面板”里的“区域与语言选项”,把“非UNICODE程序所使用的当前语言”,设置成了“中文(繁体台湾)”,(其实WIN7系统的内码是简体),则那些参数的汉字在保存成文本文件时会是乱码,保存文件名时也会是乱码。但是在如果都是简体,或者都是繁体的系统中,则不会出现这样的事情。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VBA是Visual Basic for Applications的简称,它是一种编程语言,可以用于在Excel自动化执行各种任务。通过使用VBA,可以实现从Excel提取数据并自动生成Word文档的功能。 要通过VBA提取Excel数据并生成Word文档,可以按照以下步骤进行操作: 1. 打开Excel文件,选择包含要提取的数据的工作表。 2. 在Excel创建一个VBA。可以通过按下Alt+F11键打开VBA编辑器,并在项目资源管理器双击“Sheet1”(或包含数据的工作表)。 3. 在VBA编辑器编写代码来提取Excel数据。可以使用循环语句来遍历所需的数据范围,并将数据存储在变量。 4. 创建一个新的Word文档。可以使用`Documents.Add`方法创建一个新的文档对象。 5. 使用VBA代码将Excel数据写入Word文档。可以使用`Selection`对象或`Range`对象来粘贴数据到Word文档的特定位置。 6. 格式化Word文档。可以使用VBA代码来设置字体、段落格式、表格等。例如,可以使用`Font`对象设置文本的字体和大小,并使用`ParagraphFormat`对象设置文本的对齐方式和行间距。 7. 保存并关闭Word文档。可以使用`SaveAs`方法将文档保存为指定的文件名和路径,并使用`Close`方法关闭文档。 8. 在VBA编辑器运行。可以按下F5键或通过在Excel分配一个快捷键来运行。 通过以上步骤,就可以利用VBA提取Excel数据并自动生成Word文档。这样可以方便快捷地将Excel的数据转移到Word,节省了手动操作的时间和劳动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值