虽然我不能用我现有的方法传递多个变量,但是我找到了一个替代的方法来执行宏,它允许我根据需要传递参数。
public void runTemplate(string templateName, string sourceFile, string destinationFile, string ITPath, string date)
{
string sDate = date;
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
ExcelApp.DisplayAlerts = false;
object misValue = System.Reflection.Missing.Value;
ExcelApp.Visible = false;
Microsoft.Office.Interop.Excel.Workbook ExcelWorkBook = ExcelApp.Workbooks.Open(sourceFile);
ExcelApp.Run("DoTheImport", sDate);
ExcelWorkBook.SaveCopyAs(destinationFile);
ExcelWorkBook.SaveCopyAs(ITPath);
ExcelWorkBook.Close(false, misValue, misValue);
ExcelApp.Quit();
if (ExcelWorkBook != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelWorkBook); }
if (ExcelApp != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelApp); }
}
我删除了RunMacro方法并简单地使用
ExcelApp.Run("DoTheImport", sDate);
执行宏。此方法允许我将参数传递到宏中,通过添加“ByVal”参数传递机制可以在宏中访问该宏:
Sub DoTheImport(ByVal sDate As String)