我有以下VBA功能打开excel文件:
Function copie_sd()
nom_fichier = Workbooks.Open(Filename:="C:\SD\copie_sd.xls")
If nom_fichier = False Then
Range("A1").Select
copie_sd = "ERREUR"
Exit Function
End If
copie_sd = nom_fichier
End Function
但是我收到错误:运行时错误'438'对象不支持此属性或方法。
答案 0 :(得分:0)
我相信您可能想Dim
这样变量。
Dim nom_fichier as workbook
然后使用set
进行设置
set nom_fichier = workbooks.open
以下行也不适用于对象变量
if nom_fichier = false then
这可能会有所帮助 http://msdn.microsoft.com/en-us/library/office/aa188204(v=office.10).aspx
答案 1 :(得分:0)
如果单步执行代码,您将看到Workbooks.Open()
不会返回布尔变量,而是返回对Excel.Workbook
对象的引用。
您的if语句应更改为测试Nothing
而不是False
:
if nom_fichier Is Nothing Then
copie_sd = "ERREUR"
Exit Function
End If
另一件事: 你想把'ERREUR'打印到Cell A1 吗? 如果是,您应该致电
Range("A1").Value = "ERREUR"
答案 2 :(得分:0)
你需要的只是
Function copie_sd(ByVal fn as String) as Boolean
copie_sd = False
Dim sd as Workbook
Set sd = Workbooks.Open(Filename:=fn)
If Not sd Is Nothing
copie_sd = True
End If
End Function
并将其用作
If copie_sd("C:\SD\copie_sd.xls") then
' Other things to happen after open
End If