【问题标题】:Calling a function from another Excel workbook从另一个 Excel 工作簿调用函数
【发布时间】:2015-06-02 00:38:40
【问题描述】:

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

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

我试过了:

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

ActiveWorkbook.Application.Run deleteInfo

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

但没有一个有效。

【问题讨论】:

  • 是的,可悲的是没有快乐。我尝试在上面的代码中使用'temp.xlsm',也尝试过:ActiveWorkbook.SaveAs fileName:= "temp.xlsm", _ FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

标签: vba excel


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    通过导出保存宏的模块、复制原始工作簿并将其导入新工作簿来解决此问题。 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      • 2017-02-26
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多