将不同数量的参数传递给VBA SubProcedures

时间:2017-09-22 16:56:52

标签: c# excel-vba parameters office-interop vba

我从C#项目中调用了一些VBA方法。这导致我在我的项目中重复代码。所以我为少数人创建了一个C#方法,它采用相同数量的参数但少数采用不同的数量。所以我想到了一个解决方案,我传入的所有参数都是字符串,所以如果我将一个字符串数组传入我的C#方法,然后将该字符串数组转换为VBA子过程调用中的各个字符串。这就是我所拥有的:

private static void RunVBAMethod(Excel.Application excelApp, string logFile, string vBAMethod, string [] args, out string errorType)
{
     errorType = CSharpError;
     var VbaCrashed = excelApp.Run(vBAMethod, ConvertStringArrayToString(args));
     if (VbaCrashed != "False")
     {
          errorType = VBAError;
          throw new Exception(VbaCrashed);
     }
}

这是我的ConvertArrayToString方法:

private static string ConvertStringArrayToString(string[] array)
{
      // Concatenate all the elements into a StringBuilder.
      StringBuilder builder = new StringBuilder();
      foreach (string value in array)
      {
           builder.Append(value);
           builder.Append(',');
      }
      return builder.ToString();
}

然后我称之为:

RunVBAMethod(excelApp, LogFile, "CleanMRP", new string[] { CurrentWorkbook.TimePeriod, CurrentWorkbook.Version, RemoveSpace(CurrentWorkbook.ReportType), CurrentWorkbook.MainMRPFilePath + CurrentWorkbook.FileName, HeaderRow.ToString(), CurrentWorkbook.DataPath }, out ExcelCrashed);

当我运行它时,它在excelApp.Run行崩溃,说参数不是可选的。是,我想做什么甚至可能?我是否在寻找错误的方法,如果是的话?或者我错过了这么小的东西?

0 个答案:

没有答案