从另一个Excel工作簿调用函数

时间:2015-06-02 00:38:41

标签: excel vba excel-vba

我在一个工作表中收到了大量数据,我试图根据几列中的值保存到各个工作簿。我正在采取的方法(无论好坏!)是将相关的工作表(和宏)复制到一个新的工作簿,用适当的名称保存(让我们说temp.xlsx),然后到通过删除不相关的行(称为deleteInfo的函数)来清理该新工作簿中的数据。根据公司政策,这一切都必须在不改变原始工作簿的情况下完成。

我可以复制这些东西没有问题,但是我在新工作簿中调用宏时遇到了严重的问题。

我试过了:

Application.Run "'temp.xlsx'!deleteInfo"

ActiveWorkbook.Application.Run deleteInfo

Application.Run ("'C:\user\.....\temp.xlsx'!deleteInfo")

但没有一个有效。

2 个答案:

答案 0 :(得分:0)

对于这样的任务,您应该考虑创建一个包含VBA宏的Excel加载项(文件扩展名.xla),同时保持常规工作簿的数据无宏(扩展名为.xls或.xlsx)。 Microsoft在线文章中的更多详细信息:https://support.office.com/en-ca/article/Add-or-remove-add-ins-0af570c4-5cf3-4fa9-9b88-403625a0b460 希望这可能有所帮助。

答案 1 :(得分:0)

通过导出保存宏的模块,复制原始工作簿并将其导入新工作簿来解决此问题。 pathName在前一个模块中定义为原始文件文件夹的路径(pathName = ActiveWorkbook.Path)

Sub exportMacro(ByVal pathName As String)
   'Export the macro to save as .bas file

    On Error Resume Next
    Kill pathName & "\Module6.bas" 'Delete previously exported file
    On Error GoTo 0
    ActiveWorkbook.VBProject.VBComponents("Module6").Export pathName & "\Module6.bas"
End Sub


Sub importMacro(ByVal pathName As String)
    'import the macro to a new workbook

     ActiveWorkbook.VBProject.VBComponents.Import pathName & "\Module6.bas"

End Sub