第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# 運行帶有參數(shù)的 excel 宏

C# 運行帶有參數(shù)的 excel 宏

C#
慕斯709654 2021-11-21 16:35:54
我正在嘗試以編程方式打開一個 Excel 工作簿并運行一個宏,該宏接受輸入到命令行中的參數(shù)。到目前為止,我能夠打開工作簿并執(zhí)行宏,但是我無法傳遞參數(shù)。我目前的代碼: public void runTemplate(string templateName, string sourceFile, string destinationFile, string ITPath, string date)    {        string template = templateName + "!DoTheImport";        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);        RunMacro(ExcelApp, new Object[] { template });        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); }    }    private void RunMacro(object oApp, object[] oRunArgs)    {        oApp.GetType().InvokeMember("Run", System.Reflection.BindingFlags.Default | System.Reflection.BindingFlags.InvokeMethod, null, oApp, oRunArgs);    }我的宏看起來像:Sub DoTheImport(sDate As String)With ActiveSheet.QueryTables.Add(Connection:= _    "TEXT;\\filePath\DecisionsByRegion-" + sDate + ".txt",     Destination:=Range("$A$2") _)    .Name = "test"    .FieldNames = True    .RowNumbers = False    .FillAdjacentFormulas = False    .PreserveFormatting = True    .RefreshOnFileOpen = False    .RefreshStyle = xlInsertDeleteCells    .SavePassword = False正如我所說,這適用于執(zhí)行宏(sDate 最初在子文件中格式化為字符串,而不是如圖所示傳入),但我試圖將“日期”變量傳遞給 runTemplate 并通過它作為 sDate 進入我的宏。我曾嘗試簡單地將它添加到參數(shù)對象中,RunMacro(ExcelApp, new Object[] { template, date });但這引發(fā)了錯誤。
查看完整描述

1 回答

?
胡子哥哥

TA貢獻1825條經(jīng)驗 獲得超6個贊

雖然我無法使用現(xiàn)有方法傳入多個變量,但我找到了一種執(zhí)行宏的替代方法,該方法允許我根據(jù)需要傳遞參數(shù)。


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); }

}

我已經(jīng)刪除了 RunMacro 方法,只是用來ExcelApp.Run("DoTheImport", sDate);執(zhí)行宏。這個方法允許我將參數(shù)傳遞到宏中,可以通過添加'ByVal'參數(shù)傳遞機制在宏中訪問:


Sub DoTheImport(ByVal sDate As String)


查看完整回答
反對 回復(fù) 2021-11-21
  • 1 回答
  • 0 關(guān)注
  • 351 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號