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