vba函数打开一个excel

时间:2014-02-19 13:44:28

标签: excel vba excel-vba

我有以下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'对象不支持此属性或方法。

3 个答案:

答案 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