xj520juan 发表于 2021-4-22 17:32

excel应用程序定义或对象定义错误 1004

求助,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

头狼 发表于 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(" ...

{:1_904:}没看明白,我找程序员看了,他们说代码是没错的,不知道为什么运行会出现这个问题

fanvalen 发表于 2021-4-24 10:52

@小小涩郎 大佬来解读一下vba代码呢

fanvalen 发表于 2021-4-24 10:52

xj520juan 发表于 2021-4-24 10:46
Sheets("13").Delete改成这样,直接就显示错误了

你录制一下大部分操作看看
页: [1] 2
查看完整版本: excel应用程序定义或对象定义错误 1004