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
将公式插入单元格 VBA Excel 时出现运行时错误 1004