Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 试图打开工作簿并在该文件中运行宏_Vba_Excel - Fatal编程技术网

Vba 试图打开工作簿并在该文件中运行宏

Vba 试图打开工作簿并在该文件中运行宏,vba,excel,Vba,Excel,我有一个工作簿,它打开另一个工作簿(文件名基于单元格值),然后在该文件中运行名为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 Applicatio

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

请确保您在另一个工作簿中的代码在工作簿打开事件中,这样您就不需要使用Run(“单扇区”)。打开另一个工作簿时,将立即触发过程单_选择器

最新答案

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

在调用其他工作簿的宏中放置以下代码:

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
Parameters是要传递的参数数组,因此另一个工作簿中的sub应该类似于

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

可能不是很优雅,但是:

Dim Location As String

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

Workbooks.Open(Location).RunAutoMacros (xlAutoOpen) 

如果您的另一个excel文件中有一个自动打开的子文件,用于处理要在其他电子表格上运行的宏,那么唯一的问题是,有时我需要在该文件中执行某些操作,因此每次打开该文件时运行宏并不是最佳解决方案。因此,当所有这些操作完成后,您可以打开另一个工作簿。在哪里您的代码是否驻留在另一个工作簿中。模块或工作表??我需要做/更改的事情在其他工作簿中。代码位于另一个工作簿的模块中。谢谢,让我们详细说明什么样的更改,以便我可以帮助您。wb工作簿中的宏“strSubToRun”是否以异步方式工作?