Wil*_*iam 10 excel automation vba runtime-error excel-vba
我知道我以前看过这个问题的引用,但我已经尝试了几个建议,但我仍然得到错误.我有一个工作簿,可以汇编另一本书中的数据并生成报告.然后,我想制作一个新的工作簿,将报告信息复制到新书中,保存新书并关闭它,然后转到下一个报告.它应该这样做大约10次.在我复制和粘贴工作表的代码部分,我收到错误
错误-2147417848自动化错误调用的对象已与其客户端断开连接
我已经检查了有关此错误的其他帖子,并尝试了建议的解决方案,没有任何结果.有趣的是,有时它会在断开之前通过5个循环的代码,有时只有2个.唯一的一致性是它总是在同一个地方断开
fromBook.Sheets("Report").复制之前:= newBook.Sheets("Sheet1")
我在模块的顶部有选项Explicit,并且我已经检查过以确保它内部没有任何全局变量.它说,我完全有可能忽略了某些东西.我还在一个点放了一个"计时器",以确保excel表没有相互走过.
我真的可以使用这个帮助!
这是我的子代码:
Sub CreateAndSave(ByRef Reg As Integer, ByVal j As Integer)
Dim fromBook As Workbook
Dim fromSheet As Worksheet
Dim newBook As Workbook
Dim fileExists As Boolean
Dim i As Integer
Dim Holder As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set fromBook = Application.Workbooks("Region_Audit_Report")
Set newBook = Workbooks.Add
With newBook
.SaveAs Filename:="G:\DataTeam\ExcelDev\Audit Report\Region Workbooks\Region" & Reg & " " & Month(Date) & "-" & Day(Date) & "-" & Year(Date) & ".xlsx" _
, FileFormat:=xlOpenXMLWorkbook
End With
Set newBook = Application.Workbooks("Region" & Reg & " " & Month(Date) & "-" & Day(Date) & "-" & Year(Date) & ".xlsx")
fromBook.Sheets("Report").Copy Before:=newBook.Sheets("Sheet1")
fromBook.Sheets("MonthData").Copy After:=newBook.Sheets("Report")
newBook.Sheets("MonthData").Range("A1") = "Month"
newBook.Sheets("MonthData").Range("B1") = "Store#"
newBook.Sheets("MonthData").Range("C1") = "District"
newBook.Sheets("MonthData").Range("D1") = "Region"
newBook.Sheets("MonthData").Range("E1") = "Due Date"
newBook.Sheets("MonthData").Range("F1") = "Comp Date"
newBook.Sheets("MonthData").Range("G1") = "# of Errors"
newBook.Sheets("MonthData").Range("H1") = "Late?"
newBook.Sheets("MonthData").Range("I1") = "Complete?"
newBook.Sheets("MonthData").Range("A1:I1").Interior.ColorIndex = 43
newBook.Save
newBook.Close
Application.DisplayAlerts = True
End Sub
Run Code Online (Sandbox Code Playgroud)
小智 6
我在将Excel 2000转换为2010的多个项目中遇到了这个问题.以下是我发现的似乎正在工作的内容.我做了两处修改,但不确定是哪一处造成了成功:
1)我改变了关闭和保存文件的方式(从close&save = true保存为相同的文件名并关闭文件:
...
Dim oFile As Object ' File being processed
...
[Where the error happens - where aArray(i) is just the name of an Excel.xlsb file]
Set oFile = GetObject(aArray(i))
...
'oFile.Close SaveChanges:=True - OLD CODE WHICH ERROR'D
'New Code
oFile.SaveAs Filename:=oFile.Name
oFile.Close SaveChanges:=False
Run Code Online (Sandbox Code Playgroud)
2)我回去查找代码中的所有.range并确保它是完整的构造..
Application.Workbooks("workbook name").Worksheets("worksheet name").Range("G19").Value
Run Code Online (Sandbox Code Playgroud)
或者(不是100%确定这是否是正确的语法,但这是我所做的'努力')
ActiveSheet.Range("A1").Select
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99204 次 |
| 最近记录: |