簡體   English   中英

將Excel宏轉換為C#?

[英]Convert Excel macro to C#?

我有一個包含宏的Excel文件(.xlsm)。 我想將此Excel文件上傳到服務器上,並讓C#代替VBA宏在其上工作。 宏看起來很簡單,但是我對它的理解並不足夠,無法將其轉換為C#。 下面是宏代碼:

Sub publishpages()

    'calculate how many iterations
    x = 0
    Sheets("pagegen").Select
    Range("n1").Select
    Range("n1").Copy
    numberOfPages = ActiveCell.Value

    'step through and select each sample
    For x = 0 To numberOfPages

        Sheets("listsample").Select
        Range("A2").Select
        ActiveCell.Offset(x, 0).Range("A1").Select
        Selection.Copy
        Sheets("pagegen").Select
        Range("l1").Select
        ActiveSheet.Paste

        'name folder and filename
        Sheets("pagegen").Select
        Range("ac2").Select
        Range("ac2").Copy
        foldername = ActiveCell.Value

        'publish pages
        Range("d3:q80").Select
        Application.CutCopyMode = False
        Selection.Copy
        ActiveWorkbook.PublishObjects.Add(xlSourceRange, "C:\Temp\" & foldername, "pagegen", "$d$3:$q$80", xlHtmlStatic, "sampleweb11 current_22", "").Publish (True)

    Next x

End Sub

因為我計划在服務器上運行此程序,所以我正在尋找托管庫,因此不必在服務器上安裝Office。 這是我正在查看的內容,甚至具有Linq支持: http : //epplus.codeplex.com

關於如何開始這個想法?

這是重構的代碼:

Option Explicit
Sub publishpages()
    Dim x As Long, numberOfPages As Long
    Dim folderName As String
    numberOfPages = Sheets("pagegen").Range("n1").Value

    For x = 0 To numberOfPages
        Sheets("pagegen").Range("l1") = Sheets("listsample").Range("A2").Offset(x, 0).Range("A1")
        folderName = Sheets("pagegen").Range("ac2")
        ActiveWorkbook.PublishObjects.Add(xlSourceRange, "C:\Temp\" & folderName, "pagegen", "$d$3:$q$80", xlHtmlStatic, "sampleweb11 current_22", "").Publish (True)
    Next x
End Sub

暫無
暫無

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

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