能不能exceba vba函数打开一个文件?

我正在定义一个函数来保存文件为.xls格式:

Public Function save_as_xls(full_file_path As String) As String save_as_xls = "" Dim src_file As Workbook Set src_file = Workbooks.Open(full_file_path) src_file.SaveAs filename:=full_file_path, FileFormat:=xlExcel8 src_file.Close save_as_xls = "OK" End Function 

然后在Excel单元格公式中调用它=save_as_xls("c:\temp\test.xls")

但是,它不起作用, src_fileWorkbooks.Open得到Nothing

vba函数有没有限制,无法打开文件? 我只知道它不能写入其他单元格。

Excel UDF有一定的限制,所以不能保存工作簿。 如下面的代码所示,您可以使用Excel的后期绑定实例来尝试解决方法。

把这段代码放到标准模块中:

 Public objExcel As Application Public Function SaveAsXls(FilePath As String) As String If objExcel Is Nothing Then Set objExcel = CreateObject("Excel.Application") With objExcel .Visible = True ' for debug .DisplayAlerts = False End With End If With objExcel With .Workbooks.Open(FilePath) .SaveAs _ Filename:=FilePath, _ FileFormat:=xlExcel8 .Close True End With End With SaveAsXls = "OK" End Function 

将此代码放到ThisWorkbook部分:

 Private Sub Workbook_BeforeClose(Cancel As Boolean) If TypeName(objExcel) = "Application" Then objExcel.Quit End Sub 

所以你可以在Excel单元格公式中调用它=SaveAsXls("c:\temp\test.xls")