2013-03-04 144 views
4

我有一个工作簿打开另一个工作簿(文件名基于单元格值),然后在该文件中运行一个名为Single_sector的宏。试图打开工作簿并在该文件中运行宏

它打开文件非常好,但不运行宏。有任何想法吗?

Sub run_all() 
Dim Location 



On Error Resume Next 

'Location of file to open 
Location = Worksheets("Main").Range("folder_location").Value 

'Open F&V File 
Application.Workbooks.Open Location & Range("fv_file").Value 
'Run Macro 
Run ("Single_sector") 



End Sub 

回答

13

将在宏下面的代码调用其他工作簿:

Location = Worksheets("Main").Range("folder_location").Value 
Set wb = Workbooks.Open(Location & Range("fv_file").Value) 
Application.Run "'" & wb.Name & "'!" & strSubToRun, Parameters 
Set wb = Nothing 

参数是要传递参数数组,所以在其他的子工作簿应该是这个样子

Public Sub TheSub(ParamArray X()) 

Dim i As Long 

Sheet1.Cells(1, 1).Value = "Parameters passed:" 

For i = 0 To UBound(X(0)) 
    Sheet1.Cells(i + 2, 1).Value = CStr(X(i)) 
Next 

End Sub 
+0

完美工作,非常感谢 – user1923975 2013-03-04 15:03:40

+0

在wb工作簿中的宏'strSubToRun'以异步方式工作? – Qbik 2015-07-17 07:43:27

+0

不,它没有。 – 2015-07-17 12:04:01

3

enter image description here

请确保您的另一个工作簿中的代码是在Workbook_open事件,因此你不需要使用运行(“Single_sector”)。一旦另一个工作簿打开,程序single_selector将立即触发。

更新答案

Sub run_all() 
    Dim Location 



    On Error Resume Next 

    Dim wkb As Workbook 

    'Location of file to open 
    Location = Worksheets("Main").Range("folder_location").Value 

    'Open F&V File 
    Set wkb = Workbooks.Open(Location & Range("fv_file").Value) 
    wkb.Sheets(1).Single_sector ' kindly put this proc in another workbook sheet1 




End Sub 
+0

与唯一的问题运行是,我需要做一些事情的文件中,有时需要有无论何时我打开文件都不会是最好的解决方案。 – user1923975 2013-03-04 12:12:41

+0

所以当所有的事情都结束后,你打开另一个工作簿。 – 2013-03-04 12:15:48

+0

您的代码位于另一个工作簿中。模块或工作表? – 2013-03-04 12:16:30

3

可能不是很优雅,但:

Dim Location As String 

Location = "\\location\to\file.xlsm" 

Workbooks.Open(Location).RunAutoMacros (xlAutoOpen) 

如果你在你的其他Excel文件来处理宏的Auto_Open子在您的其他电子表格

相关问题