我下面有一些代码,它有点像魅力,但我对某些事情感到好奇。
为什么我不能发表Set xWorkb = new Workbook
声明?相反,我使用Dim xWorkb as new Workbook
,这是有效的。但是我已经学会了(希望是正确的)在new
中使用Dim
语句是不好的做法,并且你应该单独创建对象。那么为什么它不起作用呢?我得到一个ActiveX组件不能创建对象错误,但由于xWorkb
部分中的新语句,Dim
以后仍然作为对象创建?让我感到困惑。
为什么在定义变量excel.application.workbooks
时我无法使用xApp
?是因为我必须指定一个工作簿而不能像这样将工作簿留空吗?我尝试将excel.application
更改为excel.application.workbooks
时出现类型不匹配错误。
Sub tester()
Dim xWorkb As New Workbook
Dim xApp As Excel.Application: Set xApp = New Excel.Application
Dim xFiles_target() As Variant
Dim file_path As String
xFiles_target = Array("Bella.xls", "Fizz.xls", "Milo.xls", "Jake.xls")
file_path = Dir("C:\Users\hans\Desktop\")
Do While Len(file_path) > 0
Debug.Print file_path
If UBound(Filter(xFiles_target, file_path)) >= 0 Then
Debug.Print "found " & file_path
Set xWorkb = xApp.Workbooks.Open("C:\Users\hans\Desktop\" & file_path)
xApp.ActiveSheet.Cells(2, 2) = "tester"
xWorkb.Save
xWorkb.Close
End If
file_path = Dir
Loop
End Sub
答案 0 :(得分:3)
您无法使用New
创建新工作簿,因为工作簿与Application
配合使用,必须使用Workbooks.Add
或Workbooks.Open
创建。
Dim xWorkb as new Workbook
不起作用 - 它似乎有效,因为您在声明它并将其分配给xWorkb
之间无法访问Workbooks.Open
。如果你这样做,你会得到相同的ActiveX组件不能创建对象错误
该错误是因为Excel.Workbook
没有任何公共构造函数。
您无法将变量定义为excel.application.workbooks
,因为它不是一种类型。它是名为Workbooks
的属性,类型为Excel.Workbooks
,属于Application
类型为Excel.Application
的对象。
您可以将变量声明为Excel.Workbooks
,但您可能不想这样做,因为无论如何您都需要创建一个Excel.Application
才能使用它。