使用的软件: Visual Basic Net 2013 , Microsoft Excel 2016
直接从VBA Excel编辑器执行代码与从Visual Basic Net代码执行相同VBA所需的时间相比,我遇到了问题。即使我编写一个简单的
Sub myCode()
MsgBox "Hello World!", vbOkOnly
End Sub
在VBA中,当我从Visual Basic代码执行时,开始执行需要花费太多时间。
例如,当我在VBA编辑器中按“F5”键时,执行代码并显示MsgBox只需不到一秒钟。当我从Visual Basic .Net运行完全相同的代码时,开始执行代码大约需要30秒。
我在Visual Basic中使用的代码如下:
Private Sub executeExcelMacro(ByVal filePath As String, ByVal macroName As String)
Dim oExcel As Excel.Application
Dim oBook As Excel.Workbook
Dim oSheet As Excel.Worksheet
oExcel = New Excel.Application
oExcel = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"), Excel.Application)
oBook = GetObject(filePath)
oSheet = oBook.Worksheets("TestExcel")
oSheet.Activate()
oBook.RunAutoMacros(1)
oExcel.Run(macroName)
End Sub
我的想法是在Excel 2016中打开Excel文件并使用VBA代码自动更新其内容,这样我就可以看到每次从Visual Basic .Net自动执行VBA代码时如何创建新行
答案 0 :(得分:0)
以下VB.NET代码在我的计算机上正常运行
Private Sub executeExcelMacro(ByVal filePath As String, ByVal macroName As String)
Dim oExcel As Excel.Application
Dim oBook As Excel.Workbook
Dim oSheet As Excel.Worksheet
oExcel = New Excel.Application
oExcel.Visible = True
'oExcel = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
'oBook = GetObject(filePath)
oBook = oExcel.Workbooks.Open(filePath)
oSheet = oBook.Worksheets("TestExcel")
'oSheet.Activate()
'oBook.RunAutoMacros(1)
oExcel.Run(macroName)
oBook.Close(False)
oExcel.Quit()
End Sub