我在一个工作表中收到了大量数据,我试图根据几列中的值保存到各个工作簿。我正在采取的方法(无论好坏!)是将相关的工作表(和宏)复制到一个新的工作簿,用适当的名称保存(让我们说temp.xlsx
),然后到通过删除不相关的行(称为deleteInfo
的函数)来清理该新工作簿中的数据。根据公司政策,这一切都必须在不改变原始工作簿的情况下完成。
我可以复制这些东西没有问题,但是我在新工作簿中调用宏时遇到了严重的问题。
我试过了:
Application.Run "'temp.xlsx'!deleteInfo"
ActiveWorkbook.Application.Run deleteInfo
Application.Run ("'C:\user\.....\temp.xlsx'!deleteInfo")
但没有一个有效。
答案 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