Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3626|回复: 9

Excel 用代码 批量生成 Word 文件出错

[复制链接]
发表于 2016-6-23 22:15 | 显示全部楼层 |阅读模式
Excel 用代码 批量生成 Word 文件出错
( 因数据块大小不定 , 故无法邮件合并. )

w.png 求助Excel操作Word.rar (19.61 KB, 下载次数: 10)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2016-6-23 22:55 | 显示全部楼层
Selection.HomeKey wdStory '把光标移到最开始

这句 如何 修改.?
其它,我可以 类推.
回复

使用道具 举报

发表于 2016-6-24 09:09 | 显示全部楼层

Selection.HomeKey wdStory '把光标移到最开始
Selection.HomeKey wdLine   '将光标移到行首
Selection.EndKey wdLine      '将光标移到行末
看你图片是表格数据,可以直接用vba操作表格数据的
ActiveDocument.Tables

回复

使用道具 举报

 楼主| 发表于 2016-6-24 09:18 | 显示全部楼层
本帖最后由 砂海 于 2016-6-24 09:22 编辑
JX_shangrila 发表于 2016-6-24 09:09
Selection.HomeKey wdStory '把光标移到最开始
Selection.HomeKey wdLine   '将光标移到行首
Selection ...

Sub Macro1()

    Dim rng As Range, 客户$
    客户 = ThisWorkbook.Sheets("调整").Range("b2").Value

    Dim MyWord As Object
    Set MyWord = CreateObject("word.application")

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Set rng = [h11].CurrentRegion
    With MyWord
        .Visible = True
        .Documents.Open (ThisWorkbook.Path & "\通知模板.doc")
'''===============================================================
'''以下代码 运行出错
Selection.HomeKey wdStory '把光标移到最开始    '''本句录制于Word , 此处运行出错
Selection.MoveRight Unit:=wdCharacter, Count:=3
Selection.TypeText Text:=客户   ''' 甲 ,此处为文本

        rng.Copy       '复制
        .Selection.PasteExcelTable False, False, False  '''粘贴为表格
        .Selection.WholeStory
        .Selection.Font.Size = 12
        With .Options
            .DefaultBorderLineStyle = wdLineStyleSingle
            .DefaultBorderLineWidth = wdLineWidth050pt
            .DefaultBorderColor = wdColorAutomatic
        End With
        .Selection.Tables(1).PreferredWidthType = 3
        .Selection.Tables(1).PreferredWidth = .CentimetersToPoints(15)

'''===============================================================

        .ActiveDocument.SaveAs Filename:=ThisWorkbook.Path & "\" & 客户 & ".doc"
        .ActiveDocument.Close
        .Quit
    End With
    Set MyWord = Nothing
    Application.CutCopyMode = False
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    MsgBox "ok"
End Sub


回复

使用道具 举报

 楼主| 发表于 2016-6-24 09:21 | 显示全部楼层
Selection.HomeKey wdStory '把光标移到最开始    '''本句录制于Word , 此处运行出错
Selection.MoveRight Unit:=wdCharacter, Count:=3
Selection.TypeText Text:=客户   ''' 甲 ,此处为文本

这3句 从Word 移植 过来的. 求修改
回复

使用道具 举报

发表于 2016-6-24 15:14 | 显示全部楼层
打开语句和从Word 移植 过来的语句修改如下,表格语句没有看,但同样可以用With ss.Words来解决。
Set ss = .Documents.Open(ThisWorkbook.Path & "\通知模板.doc")
  With ss.Words
         .Item(2).Text = ":" & 客户
         .Item(7).Text = ":" & "大中华地区"
   End With
回复

使用道具 举报

 楼主| 发表于 2016-6-24 15:47 | 显示全部楼层
JX_shangrila 发表于 2016-6-24 15:14
打开语句和从Word 移植 过来的语句修改如下,表格语句没有看,但同样可以用With ss.Words来解决。
Set s ...

.Item(2)
怎样关联到文档.
例如下图
w2.png
--------------------------------------------------
网上Item 多是 字典 , 求指点
回复

使用道具 举报

 楼主| 发表于 2016-6-24 15:59 | 显示全部楼层
Excel 里面 用单元格 地址 .
Word 一时不知道怎么弄.
回复

使用道具 举报

发表于 2016-6-24 16:26 | 显示全部楼层
已经解释得蛮清楚了,set  ss=....就是关联doc对象呀。如果.Item()的具体数值不对可根据实际情况调整。
Sub Macro1()

    Dim rng As Range, 客户$
    客户 = ThisWorkbook.Sheets("调整").Range("b2").Value

    Dim MyWord As Object
    Set MyWord = CreateObject("word.application")

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

    With MyWord
        .Visible = True
        Set ss = .Documents.Open(ThisWorkbook.Path & "\通知模板.doc")
'''===============================================================
       With ss.Words
            .Item(2).Text = ":" & 客户
            .Item(7).Text = ":" & "大中华地区"
            .Item(45).Text = [h11]
            .Item(47).Text = [i11]
            .Item(50).Text = [j11]
            .Item(54).Text = [h12]
            .Item(56).Text = [i12]
            .Item(58).Text = [j12]
            .Item(61).Text = [h13]
            .Item(63).Text = [i13]
            .Item(65).Text = [j13]
       End With

'''===============================================================

        .ActiveDocument.SaveAs Filename:=ThisWorkbook.Path & "\" & 客户 & ".doc"
        .ActiveDocument.Close
        .Quit
    End With
    Set MyWord = Nothing
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    MsgBox "ok"
End Sub




1.gif
回复

使用道具 举报

发表于 2016-6-24 16:29 | 显示全部楼层
如果用doc表格对象更好,论坛上就简单一点吧。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-18 08:20 , Processed in 0.480807 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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