吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1515|回复: 13
收起左侧

[求助] excel应用程序定义或对象定义错误 1004

[复制链接]
xj520juan 发表于 2021-4-22 17:32
求助,excel应用程序定义或对象定义错误 1004   通过百度勾选“信任对VBA工程对象模型的访问”,但还是出现问题,不知道是代码有问题还是哪里出错了,求助各位大佬,代码如下:





'批量删除除数据和模板以外的其他工作表
Public Function DeleteSheets()
    Dim i As Integer
    Application.DisplayAlerts = False '不显示提示对话框。
    For i = 1 To Sheets.Count '删除除数据和模板以外的其他工作表。
        If Sheets.Count >= 13 Then
            Sheets(13).Delete '从第13个工作表开始删除。
        End If
    Next
End Function




'复制处理数据
Public Function CopyTheData()
    DeleteSheets
    Dim N As Integer '数据工作表中实际包含数据的行数N,即本案例中学生的人数。
    Dim i As Integer '第i条数据,第i个学生。
    '之所以减1,是因为「数据工作表」含有一个标题行。
    N = Sheets("数据").UsedRange.Rows.Count - 1
    For i = 1 To N
        
        Sheets("模板").Copy after:=Sheets(i + 11) '复制模板工作表,并始终放在最后位置。
        
        Sheets(i + 12).Name = Sheets("数据").Cells(i + 1, 3) & Sheets("数据").Cells(i + 1, 1) & Sheets("数据").Cells(i + 1, 2) '用姓名重命名工作表。
        
        Sheets(i + 12).Cells(37, 8) = Sheets("数据").Cells(i + 1, 2) '学号


    Next
End Function


'把工作表另存为工作簿
Public Function SplitAndSaveFiles()
    CopyTheData '调用CopyTheData
    Dim fileName As String
    For i = 13 To Sheets.Count
        Sheets(i).Select '选择第i个工作表(i>=13)
        fileName = Sheets(i).Name '工作表的名称,案例中为学生的名字
        Sheets(i).Copy '复制第i个工作表(i>=13)为新的工作簿
        ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, fileName:= _
        "G:\8年级\" & fileName & ".pdf" _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=False
        ActiveWindow.Close '关闭新工作簿
        Windows("测试.xlsm").Activate '激活学生考试成绩表.xlsm
    Next
End Function
image.png
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头狼 发表于 2021-4-22 17:53
成绩统计系统哈?分享一个玩玩
fanvalen 发表于 2021-4-22 18:48
Sheets(13).Delete '从第13个工作表开始删除。

这就开始错了
Sheets("13").Delete
fanvalen 发表于 2021-4-22 18:50
fanvalen 发表于 2021-4-22 18:48
Sheets(13).Delete '从第13个工作表开始删除。

这就开始错了

你是想表达表名为13的还是表名sheets13
fanvalen 发表于 2021-4-22 18:51
fanvalen 发表于 2021-4-22 18:50
你是想表达表名为13的还是表名sheets13

后面sheets全错
wu0o0pj 发表于 2021-4-23 10:43
测试下是不是重命名时,名称为空
即 Sheets("数据") 某一行前三列没数据
Sheets(i + 12).Name = Sheets("数据").Cells(i + 1, 3) & Sheets("数据").Cells(i + 1, 1) & Sheets("数据").Cells(i + 1, 2) '用姓名重命名工作表
 楼主| xj520juan 发表于 2021-4-24 10:46
fanvalen 发表于 2021-4-22 18:48
Sheets(13).Delete '从第13个工作表开始删除。

这就开始错了

Sheets("13").Delete  改成这样,直接就显示错误了
 楼主| xj520juan 发表于 2021-4-24 10:48
wu0o0pj 发表于 2021-4-23 10:43
测试下是不是重命名时,名称为空
即 Sheets("数据") 某一行前三列没数据
Sheets(i + 12).Name = Sheets(" ...

没看明白,我找程序员看了,他们说代码是没错的,不知道为什么运行会出现这个问题
fanvalen 发表于 2021-4-24 10:52
@小小涩郎 大佬来解读一下vba代码呢
fanvalen 发表于 2021-4-24 10:52
xj520juan 发表于 2021-4-24 10:46
Sheets("13").Delete  改成这样,直接就显示错误了

你录制一下大部分操作看看
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-16 21:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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