scq_82 2025-10-23 13:46 采纳率: 0%
浏览 6

寻找WPS宏大佬帮我写一段代码,急!

我使用的是wps,开的有会员,我需要统计很多项目的预算表中的9个数据汇总到一个新表中,这些预算表每个都是独立的工作薄,假设这些预算表分别叫“预算1”、“预算2”、”预算3“等。我想新建一个表,命名为“汇总1”,并创建一个宏,有一个命令按钮,当我打开“预算1”后,点一下那个按钮,就能自动提取“预算1”中名叫“综合信息”这个表单中E22、G2、F19、G20、G21、F7、至F9以及F13这9个格子中的数据,但这9个格子中的数据是公式产生的数字,需要把它变成实际的数字,并分别对应填入“汇总1”表中sheet1表单的B2、C2、D2、E2、F2、G2、H2、I2、J2这9个格中,然后我关掉“预算1”并打开“预算2”,再点一下那个命令按钮,就自动提取“预算2”中名叫“综合信息”这个表单中E22、G2、F19、G20、G21、F7至F9以及F13这9个格子中的数据,并分别对应填入“汇总1”表中sheet1表单的B3、C3、D3、E3、F3、G3、H3、I3、J3这9个格中,然后我关掉“预算2”并打开“预算3”,重复上面操作,如此反复,直至把所有的预算表统计完为止。

我自己试着写了一下,因为昨天夜里临时抱佛脚,开始了解宏的写法,不懂,不知道哪儿出错,运行时老提示错误,还有创建按钮时应该也没弄对。急,晚上还想正常到点儿睡觉呢,请看到这条信息且有空的朋友帮帮忙。

另外,数据源表格 名字中带数字的,不知道有没有影响,例如像 “预算-20250815模板”这样的,所有的源差不多都叫这个名字。

好称呼全都不让用,原谅我没有使用敬称

16:46更新:经过多次不停修改尝试,错误已找到,问题已完美解决,谢谢各位

  • 写回答

2条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-10-23 14:06
    关注

    让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。

    如果答案让您满意,请采纳、点赞、关注,非常感谢!
    .
    每日一句正能量,让它带给您好心情:用心做好每一件小事,就是在为大事铺路。
    .

    根据您的需求,我为您编写一个WPS宏解决方案。这个宏将帮助您从多个预算表中提取数据并汇总到"汇总1"工作表中。

    解决方案

    1. 创建汇总表

    首先确保您有一个名为"汇总1"的工作簿,其中包含一个名为"Sheet1"的工作表。

    2. VBA宏代码

    在"汇总1"工作簿中创建以下宏:

    Sub 汇总数据()
        Dim 源工作簿 As Workbook
        Dim 目标工作簿 As Workbook
        Dim 源工作表 As Worksheet
        Dim 目标工作表 As Worksheet
        Dim 下一行 As Long
        Dim 单元格地址 As Variant
        Dim i As Integer
        
        ' 设置目标工作簿和工作表
        Set 目标工作簿 = ThisWorkbook
        Set 目标工作表 = 目标工作簿.Sheets("Sheet1")
        
        ' 获取下一空行
        下一行 = 目标工作表.Cells(目标工作表.Rows.Count, "B").End(xlUp).Row + 1
        If 下一行 < 2 Then 下一行 = 2
        
        ' 检查是否有打开的工作簿
        If Workbooks.Count < 2 Then
            MsgBox "请先打开要汇总的预算表文件!", vbExclamation
            Exit Sub
        End If
        
        ' 设置源工作簿(当前活动工作簿)
        Set 源工作簿 = ActiveWorkbook
        
        ' 检查源工作簿名称是否包含"预算"
        If InStr(源工作簿.Name, "预算") = 0 Then
            MsgBox "当前活动工作簿名称不包含'预算',请确认是否正确的预算表文件!", vbExclamation
            Exit Sub
        End If
        
        On Error GoTo 错误处理
        
        ' 设置源工作表
        Set 源工作表 = 源工作簿.Sheets("综合信息")
        
        ' 定义要提取的单元格地址
        单元格地址 = Array("E22", "G2", "F19", "G20", "G21", "F7", "F8", "F9", "F13")
        
        ' 提取数据并填入目标表
        For i = 0 To UBound(单元格地址)
            ' 将公式结果转换为值
            目标工作表.Cells(下一行, i + 2).Value = 源工作表.Range(单元格地址(i)).Value
        Next i
        
        ' 可选:在A列添加源文件名称
        目标工作表.Cells(下一行, 1).Value = 源工作簿.Name
        
        MsgBox "数据汇总完成!数据已添加到汇总表的第 " & 下一行 & " 行。", vbInformation
        
        Exit Sub
        
    错误处理:
        MsgBox "处理过程中出现错误:" & Err.Description & vbCrLf & _
               "请确认:1. 存在名为'综合信息'的工作表" & vbCrLf & _
               "2. 所有指定的单元格都存在且包含数据", vbCritical
    End Sub
    

    3. 创建命令按钮

    在"汇总1"工作簿的Sheet1中创建命令按钮:

    1. 打开"汇总1"工作簿
    2. 进入"开发工具"选项卡
    • 如果没有看到"开发工具"选项卡,需要在WPS设置中启用:
    • 文件 → 选项 → 自定义功能区 → 勾选"开发工具"
    1. 在"开发工具"选项卡中,点击"插入" → "按钮(窗体控件)"
    2. 在工作表中拖动绘制按钮
    3. 在弹出的"指定宏"对话框中,选择"汇总数据"宏
    4. 将按钮文字修改为"汇总数据"

    4. 使用方法

    1. 打开"汇总1"工作簿
    2. 打开要汇总的预算表(如"预算1")
    3. 切换到"汇总1"工作簿
    4. 点击"汇总数据"按钮
    5. 数据会自动提取并添加到汇总表中
    6. 关闭当前预算表,打开下一个预算表,重复步骤3-5

    注意事项

    1. 文件名兼容性:代码会检查文件名是否包含"预算",所以"预算-20230815模板"这样的文件名是可以正常工作的。
    1. 数据格式:代码会将公式结果转换为实际数值,确保数据稳定性。
    1. 错误处理:如果找不到"综合信息"工作表或指定的单元格,会显示错误提示。
    1. 行号自动识别:代码会自动找到下一空行,无需手动指定行号。

    如果遇到问题

    如果运行时仍然出现错误,请检查:

    1. WPS宏安全性设置:需要启用宏
    2. 确保所有预算表都有名为"综合信息"的工作表
    3. 确保所有指定的单元格地址都存在

    这个解决方案应该能满足您的需求,让您按时完成工作并准时休息!

    评论

报告相同问题?

问题事件

  • 修改了问题 10月23日
  • 修改了问题 10月23日
  • 创建了问题 10月23日