5

我有一个工作簿,它打开另一个工作簿(文件名基于单元格值),然后在该文件中运行一个名为 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
4

3 回答 3

18

将以下代码放在调用另一个工作簿的宏中:

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
于 2013-03-04T14:06:00.710 回答
4

可能不是很优雅,但是:

Dim Location As String

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

Workbooks.Open(Location).RunAutoMacros (xlAutoOpen) 

您在其他 excel 文件中有一个 Auto_Open Sub 来处理要在其他电子表格上运行的宏

于 2013-09-27T15:30:21.523 回答
3

在此处输入图像描述

请确保您在另一个工作簿中的代码在 Workbook_open 事件中,因此您不需要使用 Run ("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
于 2013-03-04T12:03:31.507 回答