excel运行VBA,出现1004错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel运行VBA,出现1004错误相关的知识,希望对你有一定的参考价值。

Sub macro1()
'
'macro1 macro
'
'每六万分表

Dim AA As Long
Dim I As Long
Dim ZROW As Long

AA = 1 'AA为表头行数,默认1行
'sheet1为分割的表的工作簿名,需按情况改变,一共三处

Sheets("SHEET1").Select
'Range里的A300000为行数范围,如分割表有85万,则改为A900000(>85万)
For I = AA + 1 To Range("A300000").End(xlUp).Row Step 60001 - AA
Rows("1:" & Format(AA)).Copy
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = Format(I)
Range("A1").Select
ActiveSheet.Paste
Sheets("SHEET1").Select
Rows(Format(I) & ":" & Format(I - AA + 60000)).Copy
Sheets(Format(I)).Select
Range("A" & Format(AA + 1)).Select
ActiveSheet.Paste
Sheets("SHEET1").Select
Next
End Sub

代码内容如上,以前是能用的,近期用不了了,不知道是不是代码有问题?
就是想把一个表格文件,分成每六万行一张表。 求懂的帮忙指点一下,谢谢!

excel运行VBA,出现1004错误是因为未勾选“信任对VBA工程对象模型的访问”选项,勾选即可。 

工具/材料:Microsoft Office Excel2007版,Excel表格。

1、首先双击打开Excel表格。

2、其次在该窗口上,点击左上角的OFFICE图标。

3、接着在弹出窗口中,点击下方的“Excel选项”按钮。

4、其次在弹出窗口中,点击左侧里“信任中心”选项。

5、之后在弹出窗口中,点击右侧里“信任中心设置”按钮。

6、然后在弹出窗口中,点击左侧里“宏设置”选项。

7、再者在弹出窗口中,勾选右侧里“信任对VBA工程对象模型的访问”选项。 

8、最后在弹出窗口中,点击“确定”按钮即可。 

参考技术A

单击文件――选项――信任中心――打开“信任中心”对话框,宏设置――勾选“信任对VBA工程对象模型的访问”。再次运行,就不会出现运行时错误1004提示。

  运行时错误1004不只是在上面这种情况才会有提示。比如通过使用 Visual Basic
对应用程序的宏创建一个数组公式时您也可能会收到运行时错误1004提示提示信息。造成excel
vba输入公式出现运行时错误1004的原因:当您试图将传递一个包含超过 255 个字符的公式时,会发生此问题,并为应用程序中 Visual Basic 中使用
FormulaArray 属性。

  …………

  运行时错误1004提示代码有很多研究,也是视具体环境不同而不同。


望采纳

追问

不是这个原因,之前我就有按这个做过设置。

参考技术B

  单击文件――选项――信任中心――打开“信任中心”对话框,宏设置――勾选“信任对VBA工程对象模型的访问”。再次运行,就不会出现运行时错误1004提示。

参考技术C 版本一:方式1:选定文件,右键-属性,将文档属性中的只读选项的勾去掉后再打开文件修改,修改后即可保存; 方式2:打开文件,另存为其它文件名,修改后也可保存。 无法保存时候处理方法: 从开始菜单进入程序-office-office工具-应用程序恢复-选择不能保存的文件-结束应用程序(此时能保存文件的最近的状态兵退出)版本二、这是Excel文件中引用了一些你电脑里没有的Dll文件。在工具/宏/VBA编辑器中,工具/引用里,把丢失的引用去除即可。但有可能其中的程序就无法正常运行。版本三、这种现象一般都是发生在你的文档通过其他文件作为数据库或者是数据资料来源,同时又缺少或数据来源文件不在读取文档指定或相同目录下时出现,比如word文档通过邮件合并功能读取了excel文件中的数据生成邮件合并模板文件后,移除excel数据源文件或将word邮件合并模板文件转移到其他目录时就会出现这个现象,解决方法就是将数据源文件放到指定的位置或与读取文档放置在同一目录下就能解决。 参考技术D 解决
Excel 2003
出现“运行时错误“
1004
”问题的方法

打开
Excel
时,弹出以下对话框:


























"XLSTART

,即可。

具体路径是:

C:\Documents
andSettings\Administrator\Application
Data\Microsoft\Excel\XLSTART
删除后,电脑重新启动下。然后再打开
Exce

C:\Documents
andSettings\Administrator\Application
Data\Microsoft\Excel\XLSTART
删除后,电脑重新启动下。然后再打开
Exce
解决
Excel 2003
出现“运行时错误“
1004
”问题的方法

打开
Excel
时,弹出以下对话框:


























"XLSTART

,即可。

具体路径是:

C:\Documents
andSettings\Administrator\Application
Data\Microsoft\Excel\XLSTART
删除后,电脑重新启动下。然后再打开
Exce

VBA:运行时自动化错误 - “代码执行已被中断”

【中文标题】VBA:运行时自动化错误 - “代码执行已被中断”【英文标题】:VBA: Run-Time Automation Error - "Code execution has been interrupted" 【发布时间】:2018-06-18 23:52:40 【问题描述】:

我正在尝试编写一个程序来循环遍历 excel 文件的目录并将一个范围复制到“主工作簿”中。当我运行程序时,系统会提示我“代码执行已被中断”。如果我选择继续,代码将成功运行,但会出现“运行时错误'-2147221080'自动化错误”。

导致错误的行是:

 Set ws = wb.Worksheets("Project Log")

我的问题是,为什么这条线会导致错误,或者有没有办法绕过错误提示,以便我的代码能够成功运行?

 Sub FileCompiler()
 Dim folderPath As String
 Dim Filename As String
 Dim wb As Workbook
 Dim Masterwb As Workbook
 Dim ws as Worksheet
'set workbook in which data will be copied to
Set Masterwb = ActiveWorkbook

'declare path
'folderPath = "C:MyPath\"

If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\"

'compile directory data to master spreadsheet
Filename = Dir(folderPath & "*.xls*")
Do While Filename <> ""
    Application.ScreenUpdating = False
    Set wb = Workbooks.Open(folderPath & Filename)
    Set ws = wb.Worksheets("Project Log")
    ws.Range(ws.Cells(2, "C"), ws.Cells(2, "C")).Copy
    Masterwb.Worksheets("Staging").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial
    ws.Range(ws.Cells(7, "A"), ws.Cells(Rows.Count, "K").End(xlUp)).Copy
    Masterwb.Worksheets("Staging").Range("B" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial
    wb.Close True
    Filename = Dir
Loop
Application.ScreenUpdating = True

End Sub

【问题讨论】:

如果没有具有该名称的工作表,您会看到该错误。该工作表是否存在于每个工作簿中?仅供参考,您在那里连续有两个ws.Range(...).Copy - 第一行将无效。此外,您不会更改打开的工作簿,因此您可以使用 wb.Close False @TimWilliams 该错误通常会导致缺少工作表吗?如果我尝试访问不存在的工作表,我通常会收到 Subscript Out of Range Error 9 类型错误。尝试访问未打开的工作簿中的工作表时,似乎会弹出此报告的错误代码。但是他的代码在打开工作簿时不会抛出错误(所以它应该是打开的)。例如,如果您 Set wb = Workbooks.Open... wb.Close Set ws = wb.Worksheets("Sheet1") 您会收到引用的错误。 也可以添加Dim ws as Worksheet 当它因错误而中断时,工作簿是否打开,并且是否有一个具有该名称的工作表?很容易检查... ^^^^ 将您的 ws 声明为工作表。它可能必须处于活动状态才能设置它。你不必担心你的主人在活动时已经设置了它。 【参考方案1】:
   Dim Finfo As String
    Dim FilterIndex As Long
    Dim Title As String
    Dim CopyBook As Workbook
    Dim CopySheet As Worksheet
    Dim ForecastFileName As Variant 
    Dim MasterSheet AS Worksheet

Set MasterSheet = ThisWorkbook.Worksheets("Yoursheetname")
'now you can always use master sheet after you set copybook 

  'Set up file filter
    Finfo = "Excel Files (*.xls*),*.xls*"
    'Set filter index to Excel Files by default in case more are added
    FilterIndex = 1
    ' set Caption for dialogue box
    Title = "Hey there!, select a file"

    'get the Forecast Filename
    ForecastFileName = Application.GetOpenFilename(Finfo, FilterIndex, Title)

'Change this according to what you need for workbook and worksheet names
Workbooks.Open (ForecastFileName)
Set CopyBook = ActiveWorkbook
Set CopySheet = CopyBook.Worksheets(1)

'Do your code, remember to close

CopyBook.Close savechanges:=False 'Not needed now

您可能想要检查 ForecastFileName 是否为 False,即当用户 x 退出时,您还需要通过检查列标题等来验证 wb 表的格式是否正确,否则您将崩溃.

【讨论】:

以上是关于excel运行VBA,出现1004错误的主要内容,如果未能解决你的问题,请参考以下文章

运行时错误 1004 文档未使用 Vba Excel 2016 保存

Excel 2007 VBA ActiveWorkbook SaveAs 未保存...运行时错误 1004

错误处理中的 Excel VBA 运行时错误 1004

将公式插入单元格 VBA Excel 时出现运行时错误 1004

为啥我的 Access VBA 在 Excel 中添加小计在一个数据库中工作,但在另一个数据库中出现错误 1004?

VBA 另存为运行时错误 1004