[英]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.