Macros 使用vbs在特定单元格选择上运行宏

Macros 使用vbs在特定单元格选择上运行宏,macros,vbscript,apache-poi,xls,Macros,Vbscript,Apache Poi,Xls,我需要编写一个vbs来选择一个单元格并在该单元格上运行宏 这是我在网上找到的代码(不起作用) 我正在Eclips中创建此vbs(通过 Runtime.getRuntime().exec("cmd /c RUN_MACRO.vbs "+xlsFile+" "+ macroName); 运行之后,我仍然没有收到任何错误,excel中也没有任何更改。 请帮忙 RUN_MACRO.VBS的VBS完整代码 这里Calc是保存在某个模块中的宏名称(当我在Open Office中创建此宏(乘以A2*B2

我需要编写一个vbs来选择一个单元格并在该单元格上运行宏 这是我在网上找到的代码(不起作用)

我正在Eclips中创建此vbs(通过

Runtime.getRuntime().exec("cmd /c RUN_MACRO.vbs "+xlsFile+" "+ macroName);  
运行之后,我仍然没有收到任何错误,excel中也没有任何更改。 请帮忙

RUN_MACRO.VBS的VBS完整代码 这里Calc是保存在某个模块中的宏名称(当我在Open Office中创建此宏(乘以A2*B2)时,当我选择一个单元格并运行一个宏时,我会更改单元格值)

方法在我的java文件中调用此vbs

public static void executeMacros(String xlsFile, String macroName){

          try{  
              Runtime.getRuntime().exec("cmd /c RUN_MACRO.vbs "+xlsFile+" "+ macroName);  

      }catch(Exception e)  
      { System.out.println(e);}  
     }

VBS文件中有一些奇怪之处。首先,您试图从Excel文件而不是从类创建对象。因此,您需要做的第一件事是
Set xl=CreateObject(“Excel.Application”)

因为您正在执行
Set wb=xl.Workbooks.Open(WScript.Arguments(1))
并且您的第二个参数是宏名称,脚本试图打开名为“macroname”的工作簿

在实际执行宏之前,您还试图选择两个不同的单元格。因此,
ActiveSheet.cells(5,3)。select似乎没有必要,也不会真正起作用

xl.Run“'Book1.xls'!Calc”
的格式实际上需要是
xl.Run“ModuleName.MacroName”

您可能需要使用此代码更新其他单元格。因此,您可能有兴趣向实际需要更新的单元格添加第三个参数

因此,请尝试将其作为您的vbs:

WorkBookToOpen = WScript.Arguments(0)
MacroToRun = WScript.Arguments(1)
CellToUpdate = WScript.Arguments(2)

Set xl = CreateObject("Excel.Application")
Set wb = xl.Workbooks.Open(WorkBookToOpen)

xl.Range( CellToUpdate ).Select
xl.Run "Module1."  & MacroToRun
xl.ActiveWorkbook.Save
wb.Close
xl.Quit
然后更改为:


Runtime.getRuntime().exec(“cmd/c RUN_MACRO.vbs”+xlsFile+“”+macroName+“”+celltoopdate);

请显示您的其余代码。这就是我如何称呼它为Runtime.getRuntime().exec(“cmd/c RUN_MACRO.vbs”+xlsFile+“”+macroName+“”+ActiveSheet.Cells(3,3)”);vbs与您建议的一样您确实需要完整路径。可以使用命令提示符将vbs文件更改为运行cscript.exe run_macros.vbs c:\xlpath\xlfile.xlsx Calc C3的目录来调试脚本。正如您所看到的,第三个参数只是工作表中单元格的名称。因此,java调用只需e您正在使用的名称而不是cells参数。我希望这会有所帮助。感谢您尝试按照建议从cmd运行脚本,还将我的参数更改为“C3”,但出现以下错误:D:\RUN\u MACRO.vbs(5,1)Microsoft VBScript运行时错误:ActiveX组件无法创建对象:“Excel.Application”。感谢您的快速响应我意识到我的计算机上安装了OpenOffice,我在带有MS Office的系统上运行了脚本,运行得很快。谢谢:)还有一个小问题,现在我需要运行一个运行宏但不保存工作簿的脚本,我知道我可以省略xl.ActiveWorkbook.save行,但如何检查宏是否实际运行?是否有任何宏示例可以帮助我做到这一点?也许是一些不会改变单元格颜色/字体的宏示例?这不需要单元格参数来处理
public static void executeMacros(String xlsFile, String macroName){

          try{  
              Runtime.getRuntime().exec("cmd /c RUN_MACRO.vbs "+xlsFile+" "+ macroName);  

      }catch(Exception e)  
      { System.out.println(e);}  
     }
WorkBookToOpen = WScript.Arguments(0)
MacroToRun = WScript.Arguments(1)
CellToUpdate = WScript.Arguments(2)

Set xl = CreateObject("Excel.Application")
Set wb = xl.Workbooks.Open(WorkBookToOpen)

xl.Range( CellToUpdate ).Select
xl.Run "Module1."  & MacroToRun
xl.ActiveWorkbook.Save
wb.Close
xl.Quit