Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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,我在这个文件中有一个宏“PrepareSheets_and_FillData:”C:\2013-2014\C1\C1 macro.xlsm“ 我需要在标记为“1NB”、“1SB”、“2NB”、“2SB”等文件上运行此宏。然后我需要将文件保存为“1NB_结果”、“1SB_结果”等。因此代码需要打开一个文件,从另一个位置运行宏,然后根据约定保存文件 有没有什么方法可以自动做到这一点 这是我使用的简单解决方案 Application.Workbooks.Open ("C\2013-2014\

我在这个文件中有一个宏“PrepareSheets_and_FillData:”C:\2013-2014\C1\C1 macro.xlsm“

我需要在标记为“1NB”、“1SB”、“2NB”、“2SB”等文件上运行此宏。然后我需要将文件保存为“1NB_结果”、“1SB_结果”等。因此代码需要打开一个文件,从另一个位置运行宏,然后根据约定保存文件

有没有什么方法可以自动做到这一点

这是我使用的简单解决方案

     Application.Workbooks.Open ("C\2013-2014\C1\1WB.xlsx")
Sheets("Data").Select
Range("A2").Select
Application.Run "'C1 Macro.xlsm'!PrepareSheets_and_FillData"
Range("C16").Select
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
    "C:\2013-2014\C1\1WB Results.xlsx", FileFormat:= _
    xlOpenXMLWorkbook, CreateBackup:=False
        ActiveWindow.Close    

然后对每个文件重复操作。

用一个主宏,然后调用执行魔术的子宏,并在需要处理的文件上迭代。

你非常接近了。可以做的一件事是将所有文件名放在一个数组中,然后循环遍历数组中的每个文件

file_names = Array("1NB", "1SB", "2NB", "2SB")

For Each indiv_file In file_names 
    Application.Workbooks.Open ("C\2013-2014\C1\" & indiv_file & ".xlsx")
    Sheets("Data").Select
    Range("A2").Select
    Application.Run "'C1 Macro.xlsm'!PrepareSheets_and_FillData"
    Range("C16").Select
    Application.CutCopyMode = False
    ActiveWorkbook.SaveAs Filename:= _
        "C:\2013-2014\C1\" & indiv_file & " Results.xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.Close    

Next

代码未经测试,可能存在语法错误

是,存在语法错误。你试过什么?