ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1913|回复: 15

[求助] 请大神帮助word VBA

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-8-26 20:16 | 显示全部楼层 |阅读模式
word 表格灌入数据。

混凝土浇筑记录表-1 ).zip

45.36 KB, 下载次数: 25

说明见未灌入数据前样表

TA的精华主题

TA的得分主题

发表于 2022-9-8 20:07 | 显示全部楼层
今天上班不忙,给你作了一个。你看下满意吗?我感觉你要的基本都能实现了。

混凝土浇筑记录(样表).zip

43.23 KB, 下载次数: 18

TA的精华主题

TA的得分主题

发表于 2022-9-8 20:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我做了个gif你看下。

TA的精华主题

TA的得分主题

发表于 2022-9-8 20:29 | 显示全部楼层
刚才太大了。不给上传。看这个吧。希望我的努力没有白费力气。
介绍gif4.gif

TA的精华主题

TA的得分主题

发表于 2022-9-8 20:36 | 显示全部楼层
写了好半天呢:)
我也刚刚学习这个。

Sub 生成数据_导出docx() 'https://club.excelhome.net/thread-1638040-1-1.html
    Dim i, j, k, arr, brr, x, 设计砼数量, y '车数
    Range("A3:F65535").ClearContents
    Range("B2:F2").ClearContents
    设计砼数量 = Cells(2, 7)
   
    Select Case 设计砼数量
    Case Is < 15
        y = 1  '定出excel有多少行数据
    Case Is = 15
        y = 1
    Case Else
        y = Int(设计砼数量 / 15) + 1 'if int(a/b)*b=a
        If Int(设计砼数量 / 15) * 15 = 设计砼数量 Then
            y = 设计砼数量 / 15
        Else
            y = Int(设计砼数量 / 15) + 1
        End If
    End Select
   
   
    ReDim arr(1 To y, 1 To 6)
    If 设计砼数量 > 15 Then
        For i = 1 To y
            If i = 1 Then
                arr(i, 1) = Cells(2, 1)
                arr(i, 2) = 1
                arr(i, 3) = Application.RandBetween(160, 180)
                arr(i, 4) = 15
                arr(i, 5) = 15
                arr(i, 6) = "无"
            Else
                If Not i = y Then
                    arr(i, 1) = arr(i - 1, 1) + TimeValue("0:15:23")
                    arr(i, 2) = arr(i - 1, 2) + 1
                    arr(i, 3) = Application.RandBetween(160, 180)
                    arr(i, 4) = 15
                    arr(i, 5) = arr(i - 1, 5) + 15
                    arr(i, 6) = "无"
                Else
                    arr(i, 1) = arr(i - 1, 1) + TimeValue("0:15:23")
                    arr(i, 2) = arr(i - 1, 2) + 1
                    arr(i, 3) = Application.RandBetween(160, 180)
                    arr(i, 4) = 设计砼数量 - arr(i - 1, 5)
                    arr(i, 5) = 设计砼数量
                    arr(i, 6) = "无"
                End If
            End If
        Next
        Range("A2").Resize(UBound(arr) - LBound(arr) + 1, UBound(arr, 2) - LBound(arr, 2) + 1) = arr
        
    Else
        Cells(2, 2) = 1
        Cells(2, 3) = Application.RandBetween(160, 180)
        Cells(2, 4) = 设计砼数量
        Cells(2, 5) = 设计砼数量
        Cells(2, 6) = "无"
         
    End If
   
    If y <= 20 Then
        页数word = 1
    Else
        If Int(y / 20) * 20 = y Then
            页数word = y / 20
        Else
            页数word = Int(y / 20) + 1
        End If    '每次页20行数据表
    End If
   
    '————————————————————————以上产生数据
    '————————————————————————以下生成word
    Dim Wrd对象 As Object
    Set Wrd对象 = CreateObject("Word.Application")
    Dim 当前路径, 导出文件名, 导出路径文件名, 判断
    Dim Str1, Str2
    当前路径 = ThisWorkbook.Path
'    最后行号 = Sheets("数据").Range("B65536").End(xlUp).Row
'    判断 = 0
    导出文件名 = "混凝土浇筑记录" & Format(Now, "yyyymmddhhmmss") & ".docx"
    导出路径文件名 = 当前路径 & "\" & 导出文件名
    FileCopy 当前路径 & "\混凝土浇筑记录(样表).docx", 导出路径文件名
    With Wrd对象
        .Documents.Open 导出路径文件名
        .Visible = False
        .ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument '设置位置在正文
        Str1 = "数据001"
        Str2 = CStr(设计砼数量) 'Sheets("数据").Cells(2, 6)
        
       .Selection.HomeKey Unit:=wdStory '光标置于文件首
      If .Selection.Find.Execute(Str1) Then '查找到指定字符串
         .Selection.Font.Color = wdColorAutomatic '字符为自动颜色
         .Selection.Text = Str2 '替换字符串
      End If
      
        .ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument '设置位置在正文
        .Selection.WholeStory '全选
        .Selection.Copy '复制
        If 页数word > 1 Then '''''''''''''''''''''''''''''''''''''''''''?????
            For i = 2 To 页数word '复制页
                .Selection.EndKey Unit:=wdStory, Extend:=wdExtend
                .Selection.MoveDown Unit:=wdLine, Count:=1 '光标置于文件尾
                .Selection.InsertBreak Type:=0 '分页
                .Selection.PasteAndFormat (wdFormatOriginalFormatting) '粘贴
                Next i
        End If
            
                m = 2 '标记要读第几行excel
                For i = 1 To 页数word '填写表格数据
                  For j = 1 To 20 '''''''''''''
                     For k = 1 To 6
                     .ActiveDocument.Tables(i).Cell(j + 6, k).Range = Sheets("数据").Cells(m, k).Text
                     
                    Next k
                    m = m + 1
                    Next j
                    Next i
                    
                    
         
                    
                    
                    
                    
                    
                    
                    
                    End With
                    Wrd对象.Documents.Save
                    Wrd对象.Quit
                    Set Wrd对象 = Nothing
                    If 判断 = 0 Then
                        i = MsgBox("已生成“" & 导出路径文件名 & "”!", 0 + 48 + 256 + 0, "提示:")
                    End If
                    
                    
                    
                    
                    
                    
                    End Sub
                    

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-9-8 23:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
xzcdcak 发表于 2022-9-8 20:36
写了好半天呢:)
我也刚刚学习这个。

新人朋友刚来就展现了无比优秀的才华!令人佩服啊!还会数组!

TA的精华主题

TA的得分主题

发表于 2022-9-9 22:23 | 显示全部楼层
小改了一下。时间间隔是15-17分钟随机的。这样更好:)

混凝土浇筑原始记录表(新).zip

45.19 KB, 下载次数: 21

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-9-18 21:15 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-9-18 23:52 | 显示全部楼层
新人朋友,别气馁!坚持下去,一个是锻炼自己,一个是帮助他人,你的编程水平会得到提高的,重在参与!乐在其中(有时我也是这样,写了好半天发布后,楼主好久不回复)。

TA的精华主题

TA的得分主题

发表于 2022-9-20 09:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2022-9-18 23:52
新人朋友,别气馁!坚持下去,一个是锻炼自己,一个是帮助他人,你的编程水平会得到提高的,重在参与!乐在 ...

看他附件里写的言辞恳切,想我哪天也没事 。就给他写了。结果人家根本不是很需要的样子。确实有点我本将心向明月的感觉 。但是自己确实是更能力强了。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 18:20 , Processed in 0.042380 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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