簡體   English   中英

與C#等效的Excel宏

[英]Equivalent Excel Macro to C#

我有一個Excel宏,我正在嘗試將其轉換為C#,但是我不知道如何翻譯此部分:

Dim Files As Variant
Dim glos As Integer
Dim Sheet1 As Object
Dim Un As Workbook

Files = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx", 2, "Open Files", , True)
If IsArray(Files) Then
    'Something with some data
    For y = LBound(Files) To UBound(Files)
        Workbooks.Open Files(y)
        b = ActiveWorkbook.Name
        glos =  glos + 1
        For Each Sheet1 In ActiveWorkbook.Sheets
            Sheet1.Copy after:= Un.Sheets(Un.Sheets.Count)
        Next
        Workbooks(b).Close False
    Next
End IF

我已經嘗試了一些方法,但是沒有用,到目前為止,我在C#中擁有以下方法:

var excelApp = new Excel.Application();
Excel.Workbook oWB = excelApp.Workbooks.Add(Type.Missing);

dynamic Files = oWb.Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx", 2, "Select Files", Type.Missing, true);
if (Files is Array)
{
    //Something with some data
    Array ar = (Array)((object)Files);
    for(int y = ar.GetLowerBound(1); y < ar.GetUpperBound(1); y++)
    {
        oWB.Application.Workbooks.Open(ar[y]);
        b = excelApp.ActiveWorkbook.Name;
        glos += 1;
        foreach(Excel.Sheets Sheet1 in excelApp.ActiveWorkbook.Sheets)
        { 
            Sheet1.Copy(After: Un.Sheets[Un.Sheets.Count]);
        }
        ExcelApp.Workbooks[b].Close(false);
    }
}

我一直在努力提高將我在工作中使用的一些宏轉換為C#的技能,但是我陷入了這一困境,對不起英語,我仍在學習該語言。

先感謝您。

Array是C#中的一種特殊類型的類,與VBA數組不同。 如果使用Array ,則需要像這樣尋址單個元素:

ar.GetValue(y).ToString();

可以在MSDN文檔中找到有關Array類的更多信息。 C#確實具有數組的概念-注意非大寫。 聲明起來更像這樣:

string[] ar = new string[iNumberOfMembers];

可以使用ar[y]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM