Excel精英培训网

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

[已解决]帮忙改个代码,按条件生成!

[复制链接]
发表于 2013-6-29 16:55 | 显示全部楼层 |阅读模式
以前求助过,得到了按条生成word的代码,
现在想加一个条件,I列为空的行才要生成word文件,生成后把状态改为"已打印",如数据中第一条I列不为空,说明以前生成过了,现在就不用生成了
test.rar (16.22 KB, 下载次数: 3)
发表于 2013-6-29 18:19 | 显示全部楼层
304050-VBA-自动生成WORD文档.rar (16.73 KB, 下载次数: 7)
回复

使用道具 举报

 楼主| 发表于 2013-6-29 20:01 | 显示全部楼层
本帖最后由 sblisb 于 2013-6-29 20:03 编辑
那么的帅 发表于 2013-6-29 18:19


谢谢了,可以打印所要数据
但存在以下两个问题
1.word文件名应当是打几条数据,就用那几条数据的B列数据(顺序号)加在一起,现在是所有号码都加在一起,比如现在只有第二条,第三条打印,那文件名就是第二条第三条的号码,082083.doc
2.如果前两条数据i列有数据,不要打印,只有第三条要打印,点打印,怎么出来的word文件也有两页呀,后一页的数据是模本的,能不能只出现一页的数据呀?
回复

使用道具 举报

发表于 2013-6-29 21:51 | 显示全部楼层    本楼为最佳答案   
sblisb 发表于 2013-6-29 20:01
谢谢了,可以打印所要数据
但存在以下两个问题
1.word文件名应当是打几条数据,就用那几条数据的B列数据 ...

304050-VBA-自动生成WORD文档-1.rar (16.96 KB, 下载次数: 16)
回复

使用道具 举报

 楼主| 发表于 2013-6-29 23:18 | 显示全部楼层
非常感谢
回复

使用道具 举报

 楼主| 发表于 2013-7-1 18:23 | 显示全部楼层
那么的帅 发表于 2013-6-29 21:51

文件中的要替换的"数据7",在word文件中出现了两次,代码只能替换一个,要如何才能替换两次呀?
原代码如下
Private Sub CommandButton1_Click()
    Dim f$, f2$, p$, arr, i&, j&, lr&, s$
    Application.ScreenUpdating = False
    arr = [a1].CurrentRegion
    lr = UBound(arr)
    For i = 2 To lr
        If arr(i, 9) <> "已打印" Then
            s = s & arr(i, 2)
            K = K + 1
        End If
    Next
    If s <> "" Then
        p = ThisWorkbook.Path & "\"
        d = Format(Date, "yyyy年mm月dd日")
        f = p & "新建 Microsoft Word 文档.doc"
        f2 = p & s & ".doc"
        FileCopy f, f2
        With CreateObject("Word.Application")
            .Documents.Open f2
            .ActiveWindow.ActivePane.View.SeekView = 0    ' wdSeekMainDocument '设置位置在正文
            .Selection.WholeStory    '全选
            .Selection.Copy    '复制
            For i = 1 To K - 1  '复制页
                .Selection.EndKey Unit:=6    'wdStory '光标置于文件尾
                .Selection.InsertBreak Type:=7    'wdPageBreak '分页
                .Selection.PasteAndFormat (0)    '粘贴wdPasteDefault
            Next i
            For i = 2 To lr
                If arr(i, 9) <> "已打印" Then
                    arr(i, 1) = WorksheetFunction.Text(arr(i, 1), "[DBNum1]yyyy年m月d日")
                    For j = 1 To 8
                        If j <> 3 Then
                            .Selection.HomeKey Unit:=6
                            If .Selection.Find.Execute("数据" & j) Then
                                .Selection.Text = arr(i, j)
                                If j = 2 Then .Selection.Font.Name = "隶书"
                            End If
                        End If
                    Next
                    Range("I" & i) = "已打印"
                End If
            Next
            .Documents.Save
            .Selection.HomeKey Unit:=6
            .Visible = True
        End With
    Else
        MsgBox "没有需要打印的数据"
    End If
    Application.ScreenUpdating = True
End Sub


回复

使用道具 举报

发表于 2013-7-1 18:34 | 显示全部楼层
sblisb 发表于 2013-7-1 18:23
文件中的要替换的"数据7",在word文件中出现了两次,代码只能替换一个,要如何才能替换两次呀?
原代码如下
...

重新发帖提问
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 07:43 , Processed in 0.270618 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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